同期に関する質問:
Set s = Collections.synchronizedSet(new HashSet());
private Object monitor_ = new Object();
//Set has element added in another routine...
//Called by some thread1, thread2, ...
TimerTask run(){ //method which executes every 1 min
synchronized(monitor_) {
s.isEmpty()
// ...
// waits for 30 seconds
// JNI call
// ...
}
}
//Called by cleanup thread
removecall()
{
synchronized( monitor_ ) {
s.remove( something );
}
}
Problem:
TimerTask run メソッドが実行されている間、クリーンアップ スレッドは待機する必要があります。待たずにこの状況を処理する効率的な方法。例: リエントラント ロック