마법의 멀티 스레딩 세계에서 시작하기 전에 Sun의 Java Concurrency 와 같은 자습서를 살펴 보는 것이 좋습니다 .
또한 좋은 책들이 많이 있습니다 ( "Java 동시 프로그래밍", "실제 Java 동시성").
답을 얻으려면 :
를 기다려야하는 코드 dbThread
에는 다음과 같은 내용이 있어야합니다.
//do some work
synchronized(objectYouNeedToLockOn){
while (!dbThread.isReady()){
objectYouNeedToLockOn.wait();
}
}
//continue with work after dbThread is ready
님 dbThread
의 방법으로 다음과 같이해야합니다.
//do db work
synchronized(objectYouNeedToLockOn){
//set ready flag to true (so isReady returns true)
ready = true;
objectYouNeedToLockOn.notifyAll();
}
//end thread run method here
objectYouNeedToLockOn
나는이 예제에서 사용하고는 각 스레드에서 동시에 조작해야하는 것이 바람직 객체, 또는 별도의를 만들 수 있습니다 Object
(I 자체가 동기화 방법을 권하고 싶지 않다) 그 목적을 위해 :
private final Object lock = new Object();
//now use lock in your synchronized blocks
더 이해하기 위해 :
위와 같은 방법을 사용하는 다른 (때로는 더 나은) 방법이 있습니다. 예를 들어 CountdownLatches
Java 5 이후로 java.util.concurrent
패키지와 하위 패키지 에는 많은 멋진 동시성 클래스가 있습니다. 동시성을 알거나 좋은 책을 얻으려면 온라인에서 자료를 찾아야합니다.