局部ArrayList对象的线程安全性问题咨询
局部ArrayList的线程安全性分析
结论:你的代码是线程安全的,不会引发ArrayList的线程安全问题
核心原因:
list是function1的局部变量,每个线程调用function1时,都会创建一个独立的ArrayList实例,这个实例只属于当前线程,不会被其他线程共享。- ArrayList的线程安全问题,本质是多个线程同时操作同一个共享实例导致的并发修改。而你的代码里,每个线程操作的都是自己独有的ArrayList,不存在跨线程的共享访问,自然不会触发线程安全问题。
- 哪怕调用
function2传入list,也只是当前线程内部的引用传递,其他线程根本接触不到这个list实例,function2里的add操作依然是单线程对自己的实例执行的。
额外提醒:
只有当你把这个局部list实例传递给其他线程(比如通过线程池提交任务、新建Thread时传入),让多个线程共享同一个ArrayList时,才会出现线程安全问题。但你当前的代码里没有这类跨线程共享的逻辑,所以完全安全。
内容的提问来源于stack exchange,提问作者ASHOK KUMAR
相关产品推荐
相关产品推荐

