gpt4 book ai didi

java - 在 Java 中命令线程的执行

转载 作者:行者123 更新时间:2023-11-30 05:53:21 24 4
gpt4 key购买 nike

请看下面的代码:

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”之后打印“hi”。

我想到的解决方案是在主线程和线程“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");
}
}

如果我的想法正确,请建议我。请提出任何其他实现此目的的方法。

最佳答案

你可以尝试类似的东西

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 的完整引用。

关于java - 在 Java 中命令线程的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com