回答
尝试使用同一个实例访问您的列表,或将其设置为static并将其设置为Synchronized以使列表线程安全。
您可以使用一个static
列表,以便随时只有一个副本。另外请确保使用同步方法进行线程安全。
要从所有线程访问列表的同一个实例,请将其设置为静态。例如:
private static List myList;
然后使访问方法是线程安全的(即让这个只有一个线程可以同时访问它,这样才能避免冲突)。例如:
public static synchronized updateList(String parameters) {
// Do something
}
您可以通过使用Collections类中的相关方法来确保您的List(或任何Collection)将是线程安全的。
从the API:
public static <T> List<T> synchronizedList(List<T> list)
Returns a synchronized (thread-safe) list backed by the specified list.
例如
static List mySharedList = Collections.synchronizedList(new ArrayList());
是的,所有的线程能够访问任何对象的同一实例(包括类)。因为每个应用程序(即每个进程)都会创建一个内存空间。然后一个进程包含内部的所有线程,包括。隐含的'主'',共享内存空间。
如果仅在一个线程中使用对象,则不存在任何并发问题。你不需要任何“同步”,锁定等。但有时你可能不得不在线程之间共享某些东西。如果读和写都可以同时在几个线程中完成,这意味着你需要同步这个对象来处理所谓的“赛跑”。
您不必为共享对象创建一个字段为static
,以使它成为线程安全的。如果有必要的话,你可以将这个对象作为参数传递给一个扩展了Thread
类的类(或者在匿名类的情况下它甚至可以是包含类方法的局部变量)
所以你只需要只需通过此对象进行同步。您可以同步显式的方法中:
synchronized (obj) {
// doing a thread-safe stuff
}
,或者你可以做一个方法完全使用这种方法修改的OBJ的类。在这种情况下,它将被隐式和自动同步的方法的调用,如“同步(本){..}”块:
public void synchronized methodFoo() {
}
至于读,读我“的Java技术手册”,章节5.7 。 “线程和并发”。由于Java中所有多线程可能性的概述,对我来说非常有帮助。
在线资源中,官方Sun/Oracle的教程可能对初学者有所帮助:http://docs.oracle.com/javase/tutorial/essential/concurrency/(已在其他答案中已提及)。
- 1. 访问相同ArrayList的HashMap
- 2. ArrayList,线程和同步 - 如何准确同步多个线程
- 3. 两个线程同时访问同一个ArrayList?
- 4. 多线程访问多线程应用程序中的相同代码
- 5. 同时访问多个线程的SQLitedatabase
- 6. 多个同时访问单个线程
- 7. ConcurrentModificationException当多个线程访问相同集合
- 8. 多线程共享/访问相同数据的问题
- 9. 如何通过多线程成功访问和循环ArrayList?
- 10. 被多个线程访问
- 11. 如何从多个线程同时访问MySQL
- 12. 如何从Java中的多个类访问相同的对象
- 13. Python多线程访问相同的文件
- 14. 访问使用多线程相同的字符串(StringBuilder)对
- 15. 如何处理3个线程访问C#中的相同函数
- 16. 如何访问与thymeleaf arraylist每个arraylist?
- 17. 从多个应用程序中访问相同的文件
- 18. 同步访问ArrayList
- 19. 如何同步对多线程访问的数组列表的访问?
- 20. 可以同时访问最多3个线程的java多线程方法
- 21. 如何访问同一个插座上的多个线程的多线程客户端
- 22. 多线程访问同步语句
- 23. Java:多线程链表访问同步
- 24. 多线程访问(读/写)同一表
- 25. 多线程访问同一类
- 26. 在多个相同的ID在jQuery中访问textarea的值?
- 27. 如何通过多进程访问相同的变量C/C++
- 28. 多个线程持有相同的锁?
- 29. 水豚从两个线程访问相同的会话
- 30. cv :: VideoCapture:从两个线程访问相同的摄像头
首先,访问意味着什么?你只是想读取数组列表,或者想要使用多线程写入它? – Sap
@Grrrr我想读取和写入 – Boni
这可能对您有所帮助http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#synchronizedList(java.util。名单) – Sap