我想让一个线程等待另一个线程完成,而不是终止它,启动第二个线程并创建第一个线程的另一个实例。这样做是对的吗?
Thread1 first = new Thread1();
first.start();
while(flag==true){//start while1
first.wait();
Thread2 second = new Thread2();
second.start();
while(second.isAlive()){
Toast toast = new Toast(...WORKING IN PROGRESS...);//just show something
}
flag = false;
}//end of while1
第一个线程会等到第二个线程停止运行吗?我只想让 Thread first 暂停并在 thread second 完成运行后继续工作。感谢您的帮助
最佳答案
假设您正在编写 Java,您可以使用 Thread.join() 方法强制某个线程等待另一个线程结束。例如,如果您希望线程 1 等待线程 2 完成:
Thread Thread2 = new SomethingImplementingThread();
Thread Thread1 = new Thread(new Runnable() {
public Thread waitforthisone;
public void run() {
try {
waitforthisone.join();
} catch (InterruptedException e) {}
// Do stuff once waitforthisone has finished
});
Thread1.waitforthisone = Thread2;
Thread2.start();
Thread1.start(); // When thread 1 starts it will run Thread 2's join function, and thus
// wait for thread 2 to exit
注意:您代码中的 wait 命令将导致线程运行(在本例中不是线程 1 或线程 2,而是创建它们的线程)等待 wait() [第 4 行],即进入休眠状态。具体来说,等待的线程只有在另一个线程(线程1或线程2)调用first.notify()时才能被唤醒。否则,您在上面提供的代码永远不会超过第 4 行。
关于android - 线程并发 wait() 其他线程完成并继续其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168448/