java - 如何线程安全地操作 Java 中的列表?

标签 java thread-safety

我有一个带有链表的简单类:

private final LinkedList<Object> list;

如果我有两种方法来操作这个列表:

public void m1(){ ... list.poll()...}

public void m2(){...list.clear)....}

如何确保线程安全?让两种方法都接收“同步”关键字就足够了吗,还是我需要放一个

synchronized(list){
    System.out.println("locking on :"  + lock);
}

围绕方法代码?

常识告诉我这是第二个,但我想要确认,或者更简单的方法来确保我的列表不会被弄乱。

PS:还是放在 CodeReview 中会更好?不知何故,在这里感觉更合适。

最佳答案

将您的列表传递给 public static <T> List<T> synchronizedList(List<T> list) java.util.Collections 中的方法类来创建线程安全列表。

关于java - 如何线程安全地操作 Java 中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838851/

相关文章:

java - 制作一个简单的 RPG - 创建一个新的 JFrame

java - 获取 WebSphere MQ 消息头

java - 处理 3.x 无法识别 random() 函数

c++ - MFC GUI 应用程序重写 - 线程、消息传递、文档/ View 等。需要建议

c++ - 线程安全问题

java - Supercsv 示例无法编译

java - Mockito - 当调用 void 方法时设置一个标志

java - 如何多次重用一个线程?

java - 同步块(synchronized block)中List的数据重叠

.net - 编码/设计通用线程安全限制器(即每秒将 X() 的执行限制为 Y 多次)