gpt4 book ai didi

java - 如何在一个类中顺序执行两个线程

转载 作者:行者123 更新时间:2023-11-29 08:07:35 24 4
gpt4 key购买 nike

我正在使用 Java 进行线程编程,我遇到了一个问题,我必须一个接一个地执行 2 个线程。下面是简要概括我的问题的代码片段。

class A{
//default execute method of this class
String a="thread1";
String b="thread2";
public void execute(){
if(a=="thread1"){
CreateThread1 t1 = new CreateThread1(this);
t1.call();
}
else if(b=="thread2") {
CreateThread1 t2 = new CreateThread1(this);
t2.call();
}
}//end of execute
public void UpdateUI(){
try{
Display.getDefault.asyncExec(new Runnable(){
public void run(){
//ui update code here
}
});
}
catch(SWTException e){
}
}
}

Class CreateThread1{
private A object;
public CreateThread1(A object){
this.object=object
}
public void call(){
Thread t = new Thread(this);
t.start();
}
public void run(){
//business logic here
object.UpdateUI();//updates UI
}
}

这里类A是显示线程任务进度的用户界面类,在上面的代码中,CreateThread1启动,CreateThread2也启动,即使CreateThread1没有被杀死,我希望CreateThread2仅在CreateThread1完全完成其任务后被触发。是可能吗?有什么想法吗?

最佳答案

你可以使用 FixedThreadPool大小为 1。这将保证顺序执行。

ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(runnable1);
executor.submit(runnable2);
executor.shutdown();
executor.awaitTermination(10, TimeUnit.SECONDS); //waits until both runnables have finished.

编辑

ExecutorService 在内部使用同步结构,因此您可以安全地假设 runnable1 将在 runnable2 之前运行。

关于java - 如何在一个类中顺序执行两个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110268/

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