6.7同步容器
不过需要注意的是:即使使用了同步容器,有时候不一定能真正的做到线程安全,
package com.moluo.concurrency.syncContainer;
import com.moluo.concurrency.annotation.NotThreadSafe;
import java.util.Vector;
@NotThreadSafe
public class VectorExample2 {
public static Vector<Integer> vector = new Vector<>();
public static void main(String[] args) throws InterruptedException {
while (true) {
for (int i = 0; i < 10; i++) {
vector.add(i);
}
Thread thread = new Thread(() -> {
for (int i = 0; i < vector.size(); i++) {
vector.remove(i);
}
});
Thread thread1 = new Thread(() -> {
for (int i = 0; i < vector.size(); i++) {
vector.get(i);
}
});
thread.start();
thread1.start();
}
}
}同时建议:在做遍历的时候,尽量不要做更新操作,不然很可能出问题。如下例:
同步容器缺点
推荐方式
Last updated