我有一个简单的类用链表:如何在Java中线程安全地操作列表?
private final LinkedList<Object> list;
如果我有两种方法操纵这个名单:
public void m1(){ ... list.poll()...}
public void m2(){...list.clear)....}
如何确保ThreadSafety的?这两种方法是否足以接收“同步”关键字,或者我是否需要在方法代码周围放置一个“方法代码”?
常识告诉我它是第二个,但我想确认,或者更简单的方法来确保我的列表不会被搞砸。
PS:或者这会更好地放在CodeReview?不知何故,这里感觉更为合适。
我会建议使用'同步'只在'轮询'和'清除'而不是在整个方法的关键部分。 – TheLostMind
另外,像add()'和remove()'?这样的方法呢?你将不得不同步*在它们上面? – TheLostMind
好的,首先:谢谢,所有的答案都有帮助:)。由于“有一个现有的系统”的情况下,我最终同步块重要。对于几乎所有其他情况,我会指出atish shimpi http://stackoverflow.com/a/27838890/2286132。 @TheLostMind:你是完全正确的,它恰好是这样,我正在处理的情况下偷看,轮询和清除,所以他们最终在这个例子中! – Layna