线程永远不会被终止吗?

时间:2015-09-16 10:20:13

标签: java multithreading

我有一个多线程应用程序如下:

类Distrobuter:

1-将任务分配给新线程。

if(workers.size() >= MAXTHREADSALLOWED){
  Worker worker = new Worker(task);
  Thread t = new Thread(worker);
  workers.add(t);
  t.start();
}

2-删除已完成的线程。

Iterator<Thread> itr = workers.iterator();
while (itr.hasNext()){
    Thread t = itr.next();
    if(t.getState() == Thread.State.TERMINATED){
        itr.remove();
    }
}

班级工作人员:

执行某项任务

================================

但是,有些线程即使在状态未终止时也会被删除。

我知道线程已经完成,因为他们没有做任何活动(没有打印出来的)。但由于某种原因,它并不满足 这个条件:

(t.getState() == Thread.State.TERMINATED)

所以我的问题是:

  1. 一旦线程到达其run方法的结尾,它是否有可能永远不会将状态更改为&#34; TERMINATED&#34;
  2. 我有什么遗失的东西吗?

0 个答案:

没有答案