我有一个方法(以下是示例),它创建了一个新列表,向其中添加一些内容,并将其传递给另一个线程进行操作。
这看起来是线程安全的。该列表是由创建它的方法本地创建的。该方法对列表进行操作,并在完成操作后再将其传递给另一个线程。
但是这种做法“感觉”不对,因为该列表在两个不同的线程中被访问,但却没有进行同步。
这段代码是否是可接受的线程安全代码?
class App
{
public static void main(String[] args)
{
final ArrayList<Integer> list = new ArrayList<Integer>();
list.add(4);
list.add(5);
final ExecutorService es = Executors.newSingleThreadExecutor();
es.execute(new Runnable() {
@Override public void run()
{
for (Integer i : list)
System.out.println(i);
}});
es.shutdown();
}
}