我们有一个桌面应用程序,它有一些后台线程,并且由于执行外部命令,还需要线程来处理out和err流。
我们可以创建新线程并让它们完成,也可以重用线程。重用线程会有一些好处,例如在性能或内存使用情况下?
答案 0 :(得分:5)
无法重复使用Thread
因为Thread
一旦完成(退出run()
方法),其Thread.State
从Thread.State.RUNNABLE
传递到{{1}并且Thread类没有Thread.State.TERMINATED
方法来设置其状态以重用它。
但是我们可以在Java中使用线程池。在线程池的情况下,创建一组固定大小的线程。来自线程池的线程被拉出并由服务提供商分配作业。完成作业后,线程再次包含在线程池中。
线程池的优势:
答案 1 :(得分:1)
JDK 1.5及以上版本,您应尽量不要创建Thread。
参考:http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html。尝试使用线程池执行器。
答案 2 :(得分:0)
重用线程具有以下优点: