android - 线程并发 wait() 其他线程完成并继续其工作

标签 android multithreading jakarta-ee concurrency wait

我想让一个线程等待另一个线程完成,而不是终止它,启动第二个线程并创建第一个线程的另一个实例。这样做是对的吗?

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/

相关文章:

android - 未决 Intent 中的所有标志是什么

python - 如何在 Python3 中切换装饰器的操作

C++ - std::thread 在执行时崩溃

java - Android 中的 UPI 集成 : How to use onActivityResult?

android - avd 管理器不显示 - 我没有使用 eclipse

java - 从 Android 应用程序中的数据存储中检索数据时出现 JDOObjectNotFoundException

linux - 使用 clock_gettime(CLOCK_MONOTONIC) 在 CPU 间移动线程

java - EJB、JPA 和 Eclipse 的连接问题

java - 检查 Glassfish DAS 是否正在以编程方式运行

java - 使用部署在另一个应用程序服务器中的应用程序服务器 Java EE jar 编译的类