私は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が開始され、CreateThread1が強制終了されなくても、CreateThread2も開始されます。CreateThread1がタスクを完全に終了した後にのみ、CreateThread2がトリガーされるようにしたいと思います。何か案は?