Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不同的线程中访问不同的列表元素_Java_Multithreading - Fatal编程技术网

Java 在不同的线程中访问不同的列表元素

Java 在不同的线程中访问不同的列表元素,java,multithreading,Java,Multithreading,当没有对列表执行添加/删除操作且每个线程都访问一组固定的索引(这些索引在线程之间不相交)时,从不同的线程访问(读/写)同一ArrayList的不同元素是否是线程安全的? 我认为没有必要在这里使用特别的预防措施(如锁定块),但我只是想确定:可能会出现问题吗?否。只要不进行删除或添加,数组就不会调整大小(并因此重新创建),并且每次get(I)调用都是安全的是否必须在同一个集合中保存所有元素(可能是由于所有线程完成后的后处理)?因为如果没有,您甚至可以为每个线程使用不同的列表,并在需要时组合这些列表。

当没有对列表执行添加/删除操作且每个线程都访问一组固定的索引(这些索引在线程之间不相交)时,从不同的线程访问(读/写)同一
ArrayList
的不同元素是否是线程安全的?
我认为没有必要在这里使用特别的预防措施(如锁定块),但我只是想确定:可能会出现问题吗?

否。只要不进行删除或添加,数组就不会调整大小(并因此重新创建),并且每次get(I)调用都是安全的

是否必须在同一个集合中保存所有元素(可能是由于所有线程完成后的后处理)?因为如果没有,您甚至可以为每个线程使用不同的列表,并在需要时组合这些列表。当然,这不是强制性的,我可以让线程在值的副本上工作,然后在所有线程完成后通过重新组合子列表来更新原始列表。但是,如果没有安全问题,我仍然希望更直接的方式!