假设您有个ArrayList实现该Runnable接口的对象。如果调用这些对象会发生什么ArrayList.clear()?他们会完成他们的run()方法吗?
这是线程安全的操作吗?如果不是,什么是线程安全替代方案?
调用ArrayList.clear()对其所包含的对象没有任何影响。它只是删除对这些对象的引用。它不是线程安全操作,ArrayList也不是线程安全集合。
每当更改ArrayList(synchronized或其中一种Lock实现)状态时,都可以使用适当的锁定,可以包装ArrayListusing Collections.synchronizedList(),也可以切换到诸如的线程安全集合CopyOnWriteArrayList。