Java 如何从数组中删除线程对象?
我正在创建的程序需要一个线程对象数组。更具体地说,我有一个扩展线程的类。我这样做是为了让创建的每个新对象都在自己的线程上运行。如果我想杀死线程并将其从数组元素中移除,以便在该空间中创建一个新的线程对象,我该如何做?这是我的想法 我理解删除对线程的引用实际上不会停止线程。为此,我首先需要中断线程。要从数组中删除thread对象,可以简单地将其设为null吗?即:Java 如何从数组中删除线程对象?,java,multithreading,java-threads,Java,Multithreading,Java Threads,我正在创建的程序需要一个线程对象数组。更具体地说,我有一个扩展线程的类。我这样做是为了让创建的每个新对象都在自己的线程上运行。如果我想杀死线程并将其从数组元素中移除,以便在该空间中创建一个新的线程对象,我该如何做?这是我的想法 我理解删除对线程的引用实际上不会停止线程。为此,我首先需要中断线程。要从数组中删除thread对象,可以简单地将其设为null吗?即: array[i].interrupt(); array[i] = null; 然后我就可以在这个空间里创建一个新的线程了 ar
array[i].interrupt();
array[i] = null;
然后我就可以在这个空间里创建一个新的线程了
array[i] = new Thread();
假设线程对象的run方法正确处理中断等
要从数组中删除thread对象,可以简单地将其设为null吗
对。这将使位于索引位置i
的引用指向null
。但是,如果将索引位置i
处的元素设置为null
,然后立即说array[i]=new Thread()
,您可以跳过将其设置为null
的步骤,只使用array[i]=new Thread()代码>取而代之
还要注意,仅将元素添加到数组中不会启动新插入的线程。在数组中插入新的线程后,仍然需要调用数组[i].start()
,以启动新的线程
也就是说,只有当您计划覆盖Thread
类中的一些功能时,从Thread
扩展才有意义。(我个人没有看到任何有效的用例)。相反,您应该实现Runnable
,并将其传递给线程
构造函数。是什么阻止了您的尝试?中断与停止不同。这应该可以工作,但为了确保在创建新线程之前停止线程,可以在将元素设置为null之前执行数组[i].join()。是否可以共享您的要求,为什么需要线程对象数组?@MauricePerry OP会在线程上调用中断
。@CKing yes。。。。。