清除可运行对象的ArrayList时会发生什么?

时间:2019-06-19 19:01:51

标签: java

假设您有ArrayList个对象实现了Runnable接口。如果调用ArrayList.clear(),这些对象会怎样?他们会完成他们的run()方法吗?

这是线程安全操作吗?如果没有,什么是线程安全替代方案?

1 个答案:

答案 0 :(得分:6)

调用ArrayList.clear()对其所包含的对象没有任何影响。它只是删除对这些对象的引用。这不是线程安全操作,因为set不是线程安全集合。

只要更改ArrayListArrayListLock实现之一)的状态,就可以使用适当的锁定,也可以使用{{ 3}},也可以切换到线程安全集合,例如Collections.synchronizedList()