Получение потока для приостановки - Thread.wait () / Thread.notify ()
Я пытаюсь понять, как работают потоки, и я написал простой пример, в котором я хочу создать и запустить новый поток, поток, отобразить числа от 1 до 1000 в основном потоке, возобновить дополнительный поток и отобразить числа от 1 до 1000 во вторичном потоке. Когда я пропускаю Thread.wait () / Thread.notify (), он ведет себя как ожидалось, оба потока отображают несколько чисел одновременно. Когда я добавляю эти функции, по какой-то причине номера основного потока печатаются вторыми, а не первыми. Что я делаю неправильно?
public class Main {
public class ExampleThread extends Thread {
public ExampleThread() {
System.out.println("ExampleThread's name is: " + this.getName());
}
@Override
public void run() {
for(int i = 1; i < 1000; i++) {
System.out.println(Thread.currentThread().getName());
System.out.println(i);
}
}
}
public static void main(String[] args) {
new Main().go();
}
public void go() {
Thread t = new ExampleThread();
t.start();
synchronized(t) {
try {
t.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i = 1; i < 1000; i++) {
System.out.println(Thread.currentThread().getName());
System.out.println(i);
}
synchronized(t) {
t.notify();
}
}
}