Пожалуйста, посмотрите на код ниже:Заказывая выполнение потоков в Java
класса А
package generalscenarios;
public class A implements Runnable{
public void run(){
System.out.println("dsad");
}
}
Класс B
package generalscenarios;
public class B {
public static void main(String[] args) throws InterruptedException {
A a1 = new A();
Thread a = new Thread(a1);
a.start();
System.out.println("hi");
}
}
Когда я исполняю класс B, My thread a будет запущен основной нитью, и hi будет напечатан на консоли основным потоком. Но порядок печати «привет» и «дсад» не определен.
Я хочу, чтобы «hi» следует печатать после «dsad».
Решение, о котором я думал, состоит в том, чтобы взять общую переменную между основным потоком и потоком «a». Основной поток будет ждать эту переменную до тех пор, пока не сообщит ему нить «а».
Класс
package generalscenarios;
public class A implements Runnable{
public void run(){
System.out.println("dsad");
synchronized (this) {
this.notify();
}
}
}
Класс B
package generalscenarios;
public class B {
public static void main(String[] args) throws InterruptedException {
A a1 = new A();
Thread a = new Thread(a1);
a.start();
synchronized (a1) {
a1.wait();
}
System.out.println("hi");
}
}
Пожалуйста, предложите мне, если мое мышление является действительным. Пожалуйста, предложите любой другой способ достижения этого.
Вы можете посмотреть http://stackoverflow.com/questions/873237/synchronizing-two-threads - Thread.join() может быть просто билетом. – Ewald
почему вы не присоединяетесь к теме? –
Спасибо за решение –