Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从数组中删除线程对象?_Java_Multithreading_Java Threads - Fatal编程技术网

Java 如何从数组中删除线程对象?

Java 如何从数组中删除线程对象?,java,multithreading,java-threads,Java,Multithreading,Java Threads,我正在创建的程序需要一个线程对象数组。更具体地说,我有一个扩展线程的类。我这样做是为了让创建的每个新对象都在自己的线程上运行。如果我想杀死线程并将其从数组元素中移除,以便在该空间中创建一个新的线程对象,我该如何做?这是我的想法 我理解删除对线程的引用实际上不会停止线程。为此,我首先需要中断线程。要从数组中删除thread对象,可以简单地将其设为null吗?即: array[i].interrupt(); array[i] = null; 然后我就可以在这个空间里创建一个新的线程了 ar

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

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

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。。。。。