Подается ли уведомление о завершении потока? Почему этот пример кода работает?

Я ищу темы в некоторых головоломках и не могу понять, почему следующее последовательно печатает999999:

class Job extends Thread {  
    private Integer number = 0;  
    public void run() {  
        for (int i = 1; i < 1000000; i++) {  
            number++;  
        }  
    }  
    public Integer getNumber() {  
        return number;  
    }  
}  
public class Test {  
    public static void main(String[] args)   
    throws InterruptedException {  
        Job thread = new Job();  
        thread.start(); 
        synchronized (thread) {  
            thread.wait();  
        }  
        System.out.println(thread.getNumber());  
    }  
}   

Нет notifyна том же замке (и ложное пробуждение, похоже, игнорируется ).
Если поток завершается, сигнализируется ли уведомление или что-то в этом роде?
Почему mainвыводит результат и не «застревает» в ожидании?

15
задан James 23 July 2012 в 17:13
поделиться