首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在线程完成执行后退出应用程序

如何在线程完成执行后退出应用程序
EN

Stack Overflow用户
提问于 2018-03-19 11:29:03
回答 5查看 784关注 0票数 0

我有以下代码

代码语言:javascript
复制
    public static void main(String[] args) {
    new Thread() { 
        public void run() {
            try {
                employee1();
            } catch (Exception e) {
                Logger.LogServer(e);
            }
            finally {
                Logger.LogServer("empployee1 records inserted");
          }
        }
    }.start();
    new Thread() { 
        public void run() {
            try {
                employee2();
            } catch (Exception e) {
                Logger.LogServer(e);
            }
            finally {
                Logger.LogServer("employee2 records inserted");
          }
        }
    }.start();
}

我希望等待这两个步骤完成执行,然后使用System.exit(0);退出应用程序。我怎样才能做到这一点?

有人能帮帮我吗。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-03-19 11:32:14

您需要在两个线程上使用join()

根据正式文件

联接方法允许一个线程等待另一个线程的完成。如果t是线程当前正在执行的线程对象,t.join()将导致当前线程暂停执行,直到t的线程终止为止。

代码语言:javascript
复制
public static void main(String[] args) {
    Thread t1 = new Thread() { 
        public void run() {
            ...
        }
    };
    Thread t2 = new Thread() { 
        public void run() {
            ...
        }
    };

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

    t1.join();
    t2.join();   
}
票数 4
EN

Stack Overflow用户

发布于 2018-03-19 11:32:20

代码语言:javascript
复制
Thread t1 = ...
Thread t2 = ...
t1.join();
t2.join();
System.exit(0);

您需要捕获InterruptedException或标记main以及抛出它。

票数 1
EN

Stack Overflow用户

发布于 2018-03-19 11:33:16

您可以使用.join()来阻塞线程,直到线程完成执行为止。

代码语言:javascript
复制
Thread t = new Thread() { 
    public void run() {
        try {
            employee1();
        } catch (Exception e) {
            Logger.LogServer(e);
        }
        finally {
            Logger.LogServer("empployee1 records inserted");
      }
    }
}.start();
Thread t2 = new Thread() { 
    public void run() {
        try {
            employee2();
        } catch (Exception e) {
            Logger.LogServer(e);
        }
        finally {
            Logger.LogServer("employee2 records inserted");
      }
    }
}.start();
t.join();t2.join();
System.exit(0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49361881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档