Java线程在运行完成后会做什么?

时间:2012-08-15 20:12:52

标签: java multithreading sockets

在游戏中,我正在使用线程的许多实例,并且它不会跟踪它们。

clientThread cT = new clientThread(socket);
new Thread(cT).start();

我需要知道的是,当胎面的一个实例完成时(所有的循环都已经完成并且不再使用它),就像一个方法的实例一样,它被丢弃了吗?或者我是否需要使用一段特殊代码来丢弃它?

4 个答案:

答案 0 :(得分:14)

该线程是一个普通对象,它将像任何其他对象一样被垃圾收集。对于线程对象,当线程退出时,它就有资格进行收集。

答案 1 :(得分:4)

run()完成后,它将被丢弃。您无需添加任何特殊代码即可发布。

注意:丢弃并不意味着,它已从内存中消失(但它不会进一步运行)。下次GC采集运行时可能会进行GC处理。

答案 2 :(得分:2)

如果垃圾收集器到达它,它将被销毁。

答案 3 :(得分:1)

其他朋友的确回答了你的要求。只有一条评论。

  

我正在使用线程的许多实例,并且它不会保留   跟踪他们。

不要这样做:new Thread(cT).start(); I.e。开始产生线程。
阅读有关线程池和ExecutorService

的信息