次のコードは、Listへの同時アクセスでスレッドセーフですか?
volatile修飾は、ここに任意の値を追加しますか?booleanを使用して同期する
class concurrentList{
private AtomicBoolean locked = new AtomicBoolean(true);
volatile List<Integer> list=new LinkedList<Integer>();
long start = System.currentTimeMillis();
long end = start + 60*100;
public void push(int e){
while(!locked.get());
list.add(e);
while(!locked.compareAndSet(true,false));
}
public int pop(){
int elem;
while(locked.get());
elem=(Integer)list.remove(0);
while(!locked.compareAndSet(false,true));
return elem;
}
....
}
なぜ、あなたが 'push'と' pop'メソッドで異なるロック条件を持っているのか分かりません。しかし、それでは、['java.util.concurrent.Lock'](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Lock.html)を使わないでください。 ?is-external = true)オブジェクト? – n247s