Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 IllgalThreadStateException_Java_Multithreading - Fatal编程技术网

Java IllgalThreadStateException

Java IllgalThreadStateException,java,multithreading,Java,Multithreading,我正在编写一个多线程程序,在该程序中,我得到了异常java.lang.IllegalThreadStateException 欢迎任何帮助 这是我的堆栈跟踪 Exception in thread "main" java.lang.IllegalThreadStateException at java.lang.Thread.start(Unknown Source) at GeoMain.main(GeoMain.java:18) 这是我的主类代码 public class TMai

我正在编写一个多线程程序,在该程序中,我得到了异常
java.lang.IllegalThreadStateException

欢迎任何帮助

这是我的堆栈跟踪

Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at GeoMain.main(GeoMain.java:18)
这是我的主类代码

    public class TMain {

    public static void main(String[] args) {

        String Batchid="1,2,3";
        String batch[]=StringUtils.split(Batchid,",");

        MultiThread gt=new MultiThread();
        for(int i=0;i<batch.length;i++){
            gt.setBatch(batch[i]);                  
            gt.start();
            System.out.println("Thread started for "+batch[i]);
        }

        System.out.println("mainfinish");

    }

}
公共类TMain{
公共静态void main(字符串[]args){
字符串Batchid=“1,2,3”;
字符串批处理[]=StringUtils.split(Batchid,“,”);
多线程gt=新的多线程();
对于(int i=0;i,在此代码段中:

MultiThread gt=new MultiThread();
for(int i=0;i<batch.length;i++){
    gt.setBatch(batch[i]);                  

    gt.start();              <--- Same thread object as in previous iteration

    System.out.println("Thread started for "+batch[i]);
}

同一线程不能启动两次。如果要创建多个线程,请将线程实例的创建移动到循环中:

    for(int i=0;i<batch.length;i++){
        MultiThread gt=new MultiThread();
        gt.setBatch(batch[i]);                  
        gt.start();
        System.out.println("Thread started for "+batch[i]);
    }

for(int i=0;i您尝试多次启动同一(多)线程实例。在循环中创建一个新的多线程实例,使每个线程都有自己的实例

                                     ----------.
for(int i=0;i<batch.length;i++){               |
                                               |           
    MultiThread gt=new MultiThread();       <--'

    gt.setBatch(batch[i]);                  
    gt.start();
    System.out.println("Thread started for "+batch[i]);
}
    for(int i=0;i<batch.length;i++){
        MultiThread gt=new MultiThread();
        gt.setBatch(batch[i]);                  
        gt.start();
        System.out.println("Thread started for "+batch[i]);
    }