Phi*_*ppe 5 java multithreading
在我参与的开源应用程序中,我们遇到了一个错误,应用程序并不总是正常关闭.这就是我想要解决的问题.
经验表明,这种情况大部分发生在线程和进程启动时,但未正确管理(例如,线程正在等待套接字连接,应用程序正在关闭并且线程一直在等待).
考虑到这一点,我在整个源代码中搜索了'.start()',发现了53次(让我感到有些害怕).
作为第一步,我想创建一个帮助器类(ThreadExecutor),其中当前代码'thread.start()'将被'ThreadExecutor.Execute(thread)'替换为a)现有源中只有一些更改和b)一个单独的类,我可以很容易地检查哪些线程没有按预期结束.要做到这一点,我想
这样我就可以获得所有正在执行的线程的最新列表,当应用程序挂起时,我可以看到哪个线程正在导致它.
问题:
只是为了澄清:在弄清楚如何正确终止应用程序之前,我在这里要问的是找到哪些线程对于某些非常难以重现的测试用例的原因是什么是最好/最简单的方法.
尝试使所有线程成为守护进程(当所有剩余线程都是守护进程时终止JVM)。在启动每个线程之前使用thread.setDaemon(true) 。
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |