同步容器
我们写这样一段代码。
我们想对vector容器在遍历时,去根据条件删除:
会出现异常。
那正确的方式应该如何去写呢,这里就涉及到了迭代器:
单线程中我们是这么做的。
那么多线程中呢?
有的时候它会报这个错误,意思是说有时候第一个线程删除了demo2,第二个线程可能会找不到这个元素。
那我们要如何正确运行呢?
我们在迭代器中去加synchronized关键字就可以了。
我们也可以使用collection类给我们提供的线程安全集合方法。
并发容器:
这里我们主要以CopyOnWrite为例:
在并发容器中直接使用这种方式是可以的。
那如果我们在并发容器里使用迭代器呢?
但是并发容器中,我们使用迭代器进行删除就会给我们报出错误。
那这里我们可以思考下在之前同步容器中,多线程下使用for循环遍历根据条件删除会报错,那在并发容器中这种做法还会报错么?
在并发容器中不会报错。