Извините, если есть другие подобные вопросы, но я не смог их найти, я новичок в параллельном программировании, и эта проблема давала мне некоторое время, что мне действительно нужно понять, какую ошибку я совершил, илииначе я не смог перейти к своему заданию.
Я пытаюсь добиться того, чтобы вывести «1» из «Test», обработанного потоком, и «из Test 2» из «Test 2»который также обрабатывается потоком, но печатается только «1».Что мне делать?
================================
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test implements Runnable {
Third third;
public Test(Third third){
this.third = third;
}
public void run() {
while (true) {
synchronized (third) {
try {
System.out.println("1");
third.wait();
} catch (InterruptedException ex) {
}
}
}
}
}
=====================
public class Test2 implements Runnable{
Test test;
Third third;
public Test2(Test test, Third third){
this.test = test;
this.third = third;
}
public void run(){
while(true){
synchronized(third){
third.notifyAll();
System.out.println("from test 2");
}
}
}
}
================================
public class Third {
}
==============================
public class main {
public static void main(String[] args) throws InterruptedException{
Third third = new Third();
Test test = new Test(third);
Test2 test2 = new Test2(test, third);
Thread t1 = new Thread(test);
Thread t2= new Thread(test2);
t1.run();
t2.run();
t2.join();
t1.join();
}
}
Выход