rui*_*rui 6 java multithreading
一行我的意思是每行最多100个字符.
(我基本上需要这个来保持程序活着.主线程注册在不同线程中运行的回调监听器.我只需要主要的一个永久挂起并让其他线程完成它们的工作)
Boz*_*zho 13
synchronized(this) {
while (true) {
this.wait();
}
}
Run Code Online (Sandbox Code Playgroud)
(感谢Carlos Heuberger.上面代码中省略了异常处理)
这将使当前线程在当前类的监视器上等待,直到有人调用notify()或永远.
kro*_*ock 12
你可以做的一些事情比永久挂起初始线程更好:
otherThread.join().这将导致您正在运行的当前线程休眠,直到另一个线程执行完毕.otherThread.setDaemon(false)并简单地让您的初始线程退出.这会将您的新线程设置为用户线程.在运行的唯一线程是守护程序线程之前,Java不会关闭.Thread.sleep(Long.MAX_VALUE);
好吧,所以它不是永远的,但谈论很长一段时间:)
使用CountDownLatch,您可以等到倒数达到 0,如果您确保它永远不会倒数,也许只有在需要结束时才倒数。(这也会导致 0% cpu,与将永远运行的循环相反,并且使用 join(),当所有其他线程完成时,您的应用程序仍将完成,执行器的选项更好,但也会在所有执行的任务时结束完成了)