我正在创建的程序需要一组线程对象。更具体地说,我有一个扩展Thread的类。我这样做是为了创建每个新对象在自己的线程上运行。如果我想杀死线程并将其从数组元素中删除,以便我可以在该空间中创建一个新的Thread对象,我该怎么做?这是我的想法。
我理解删除对该线程的引用实际上不会停止该线程。要做到这一点,我首先需要中断线程。要从数组中删除线程对象,我可以简单地将其设为null吗?即:
array[i].interrupt();
array[i] = null;
然后我可以在那个空间创建一个新线程吗?
array[i] = new Thread();
假设Thread对象的run方法正确处理中断等。
答案 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
构造函数。