请查看以下代码:
A类
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类时,我的线程a将由主线程启动,并且hi将由主线程打印在控制台上。但是印刷的顺序" hi"和" dsad"尚未确定。
我想要那个"嗨"应该在" dsad"。
之后打印我想到的解决方案是在主线程和线程" a"之间采用共享变量。主线程将等待该变量,直到时间线程" a"通知他。
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");
}
}
如果我的想法有效,请建议我。请提出任何其他实现此目的的方法。
答案 0 :(得分:6)
您可以尝试类似
的内容public static void main(String[] args) throws InterruptedException {
A a1 = new A();
Thread a = new Thread(a1);
a.start();
a.join();
System.out.println("hi");
}
请阅读Thread.join()并阅读Thread
的完整参考资料。