ThreadB가 ThreadB에서 통지를받는 이유는 ThreadB가 완전히 완료된 경우에만 찾을 수 없습니다. 만약 내가 알리미() ThreadA 어쨌든 알림을 가져옵니다.스레드 알림이 작동하지 않습니다.
ThreadB는 작업이 끝나면 자동으로 알림을 보냅니 까?
ThreadB가 ThreadA를 정시에 알려주지 않는 이유는 무엇입니까?
class ThreadA {
public static void main(String [] args) {
ThreadB b = new ThreadB();
b.start();
synchronized(b)
{
try {
System.out.println("Waiting for b to complete...");
b.wait();
System.out.println("waiting done");
} catch (InterruptedException e) {}
System.out.println("Total is: " + b.total);
}
}
}
class ThreadB extends Thread {
int total=0;
public void run() {
synchronized(this)
{
for(int i=0;i<10;i++)
{
System.out.println(Thread.currentThread().getName()+" "+ Integer.toString(i));
total += i;
}
notify();
System.out.println("notify done");
for(int i=0;i<100;i++)
{
System.out.println(Thread.currentThread().getName()+" "+ Integer.toString(i));
total += i;
}
}
}
}
출력 :
Waiting for b to complete...
Thread-0 0
Thread-0 1
Thread-0 2
Thread-0 3
Thread-0 4
Thread-0 5
Thread-0 6
Thread-0 7
Thread-0 8
Thread-0 9
notify done
Thread-0 0
Thread-0 1
Thread-0 2
Thread-0 3
Thread-0 4
Thread-0 5
Thread-0 6
Thread-0 7
Thread-0 8
Thread-0 9
Thread-0 10
Thread-0 11
Thread-0 12
Thread-0 13
Thread-0 14
Thread-0 15
Thread-0 16
Thread-0 17
Thread-0 18
Thread-0 19
waiting done
Total is: 235
추가 질문 - 총 출력 235 왜?