多线程并发编程笔记07(小滴课堂)容器

同步容器

我们写这样一段代码。

我们想对vector容器在遍历时,去根据条件删除:

 

 会出现异常。

那正确的方式应该如何去写呢,这里就涉及到了迭代器:

 

单线程中我们是这么做的。

那么多线程中呢?

 

 

有的时候它会报这个错误,意思是说有时候第一个线程删除了demo2,第二个线程可能会找不到这个元素。

那我们要如何正确运行呢?
 

我们在迭代器中去加synchronized关键字就可以了。

 

我们也可以使用collection类给我们提供的线程安全集合方法。

并发容器:

 这里我们主要以CopyOnWrite为例:

 在并发容器中直接使用这种方式是可以的。

那如果我们在并发容器里使用迭代器呢?

但是并发容器中,我们使用迭代器进行删除就会给我们报出错误。

 那这里我们可以思考下在之前同步容器中,多线程下使用for循环遍历根据条件删除会报错,那在并发容器中这种做法还会报错么?

在并发容器中不会报错。

 

猜你喜欢

转载自blog.csdn.net/weixin_52618349/article/details/130047975
今日推荐