java - 启动线程时出现非法线程状态异常

标签 java multithreading exception state

我试图创建 4 个线程并给它们分配任务。但是我不断收到 IllegalThreadStateException。我在这里隐藏了问题,但似乎没有人帮助我。 下面是关键代码片段:

Sorter worker1 = new Sorter(theView,1);
Sorter worker2 = new Sorter(theView,2);
Sorter worker3 = new Sorter(theView,3);
Sorter worker4 = new Sorter(theView,4);

for(int nextTask=0 ; nextTask<List_of_FileContentsLists.size() ; nextTask++){
    if(worker1.busy == false){
        worker1.acquireTask(List_of_FileContentsLists.get(nextTask),fileList[nextTask]);
        worker1.start();
    }
    else if(worker2.busy == false){
        worker2.acquireTask(List_of_FileContentsLists.get(nextTask),fileList[nextTask]);
        worker2.start();
    }
    else if(worker3.busy == false){
        worker3.acquireTask(List_of_FileContentsLists.get(nextTask),fileList[nextTask]);
        worker3.start();
    }
    else if(worker4.busy == false){
        worker4.acquireTask(List_of_FileContentsLists.get(nextTask),fileList[nextTask]);
        worker4.start();
    }
    else{
        nextTask--;
    }
}

提前致谢!

最佳答案

对于您启动一次的每个 worker,您不能像在循环中那样重复启动它。我希望 WorkerN 代表不同的线程。

当您尝试将线程的状态更改为不允许的状态时,会出现 IllegalThreadState。如需更多引用,请查看 javadoc:

https://docs.oracle.com/javase/7/docs/api/java/lang/IllegalThreadStateException.html

关于java - 启动线程时出现非法线程状态异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50276938/

相关文章:

Android:即使我调用 unregisterReceiver,也会抛出泄漏的 IntentReceiver 异常

java - 获取jar内的目录

java - 有没有更有效(且不那么乏味)的方法来做到这一点?

java - java中如何使用Socket处理多个连接

java - 从图库中选择图像会出现错误 Android N

c++ - reinterpret_cast 本身会导致异常吗?

java - 如何在 Java GUI 中的每个 TreeSelectionEvent 上刷新 JTable?

java - 压缩包含子文件夹的文件夹

C++ 不同的错误使用不同的 gcc 优化

linux - 我的信号量模块没有正常工作(餐饮哲学家)