如下代码是否正确?
class RunnerA implements Runnable {
private list list;
private buffer buffer;
///重写run
public void run() {
synchronized(list) {
//操作 list
}
synchronized(list) {
//操作 buffer
}
synchronized(list) {
synchronized(list) {
//操作 buffer 和 buffer
}
}
}
..........
setter
getter
}
class RunnerB implements Runnable {
private RunnerA a;
public RunnerB (RunnerA a) {
this.a = a;
}
///重写run
public void run() {
synchronized(list) {
synchronized(list) {
//操作 buffer 和 buffer
a.getter
a.setter
}
}
}
..........
setter
getter
}
//main 函数
{
//线程池
ExecutorService executorA = Executors.newCachedThreadPool();
ExecutorService executorB = Executors.newCachedThreadPool();
for(int i = 0;i < 3; i++) {
RunnerA a = new RunnerA();
executorA.submit(a);
executorB.submit(new RunnerB(a));
}
}
也就是一共三组线程
每一组由一个RunnerA 和 RunnerB,且每组的RunnerB可以操作RunnerA 中的变量
这样是否能保证,list和buffer线程安全?
肯定是可以的,和你用的executorservice没关系。