我应该使中断线程无效吗?

时间:2014-06-27 04:49:04

标签: java

我创建了一个这样的线程:

private Thread t = new Thread() {
@Override
public void run() {
    try {
        while(true) {
        // do work
        Thread.sleep(1000);
        }
    } catch (InterruptedException ex) {
    }
}
};
t.start();

然后我用t.interrupt()打断了它。

一旦线程停止并进入睡眠状态()它就会中断并变得无法使用,但是它会保留在内存中吗?

我是否必须致电t = null,否则GC会处理此事?

我正在尝试动态中断线程​​并在需要时重新创建它(使用t = new Thread()),但我不确定是否只是interrupt()从内存中删除旧线程。我搜索过但找不到这个明确的答案。

2 个答案:

答案 0 :(得分:1)

Thread类是OS Thread的代理。在调用start()之前,没有实际的OS线程,并且在线程停止之后,即使您坚持使用Thread对象,它也会被清除。此时它就像任何其他物体一样,它将以正常方式清理。

答案 1 :(得分:0)

似乎你在一个方法中使用了这个代码片段,因此Thread t成为局部变量,它将被gc清除,只是确保你不要在方法中进一步使用这个引用变量。