java - 如何在 Android 中完成两个线程时运行第三个线程

标签 java multithreading

我正在编写一个需要使用线程的 Android 应用程序。
在这个应用程序中,我有 3 个线程从应用程序的开头开始。
这是我的代码:

Thread t1,t2,t3;
protected void onCreate(Bundle savedInstanceState)
{

t1=new Thread(new Runnable()
{
    public void run()
    {
        //do some long stuffs
        t3.notify();
    }
});
t2=new Thread(new Runnable()
{
    public void run()
    {
        //do some long stuffs
        t3.notify();
    }
});
t3=new Thread(new Runnable()
{
    public void run()
    {
        this.wait();
        //run after t1 & t2 is done.
    }
});
t1.start();
t2.start();
t3.start();
}

现在我想 hibernate t3 线程并在 t1 和 t2 完成它们的工作时运行它。

最佳答案

将 t1、t2 引用传递给 t3 并在 t3.run() 内部等待其他线程:

t1.join();
t2.join();

像这样:

    final Thread t1, t2, t3;

    t1 = new Thread(new Runnable() {
        public void run() {
            //do some long stuffs
        }
    });

    t2 = new Thread(new Runnable() {
        public void run() {
            //do some long stuffs
        }
    });

    t3 = new Thread(new Runnable() {
        public void run() {
            try {
                t1.join();
                t2.join();
                // t1 & t2 have finished
                // continue with t3 stuff
            } catch (InterruptedException e) {
                //handle it
            }
        }
    });

    t1.start();
    t2.start();
    t3.start();

关于java - 如何在 Android 中完成两个线程时运行第三个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26816457/

相关文章:

java - 为 Maven 部署指定显式类型

python - 在 Python 中将线程和进程与共享队列一起使用

linux - 线程终止时是否调用了 `SIGKILL`?

java - JFreechart 刻度单位

java - 根据 JSP 上选择项中 Action 的参数注入(inject)样式属性

multithreading - 这是在 Delphi 6 中设置线程名称的正确方法吗?

Java:如何启动一些异步操作并从其他线程更新用户界面?

objective-c - 在后台线程中下载多个文件

java - 无法使用 Java OpenGL VBO 同时显示 2 个项目

java - 使用 Spring MVC 和 Hibernate 进行 Ajax 调用