如何从数组中删除Thread对象?

时间:2017-02-13 13:17:05

标签: java multithreading java-threads

我正在创建的程序需要一组线程对象。更具体地说,我有一个扩展Thread的类。我这样做是为了创建每个新对象在自己的线程上运行。如果我想杀死线程并将其从数组元素中删除,以便我可以在该空间中创建一个新的Thread对象,我该怎么做?这是我的想法。

我理解删除对该线程的引用实际上不会停止该线程。要做到这一点,我首先需要中断线程。要从数组中删除线程对象,我可以简单地将其设为null吗?即:

array[i].interrupt();    
array[i] = null;

然后我可以在那个空间创建一个新线程吗?

array[i] = new Thread();

假设Thread对象的run方法正确处理中断等。

1 个答案:

答案 0 :(得分:0)

  

要从数组中删除线程对象,我可以简单地将其设为null

是。这应该使索引位置i处的引用指向null。但是,如果您要将索引位置i处的元素设置为null,然后立即说出array[i] = new Thread();,则可以跳过将其设置为null的步骤,并仅使用而是array[i] = new Thread();

另请注意,只需将元素添加到数组中即可启动新插入的Thread。在数组中插入新的array[i].start()后,您仍需要致电Thread以启动新的Thread

也就是说,只有当你计划覆盖Thread类的某些功能时,从Thread延伸才有意义。 (我个人没有看到任何有效的用例)。您应该实现Runnable并将其传递给Thread构造函数。