-2

我是Core Java的初學者,現在我正在學習多線程。我有一個與此相關的代碼一個疑問:多線程中的非法狀態異常

import java.io.*; 
public class MyThread extends Thread 
{ 
    public void run() 
    { 
     for(int i=0;i<10;i++) 
     { 
      try 
      { 
       Thread.sleep(500); 
      } 
      catch(InterruptedException e) 
      { 
       System.out.println(e); 
      } 
      System.out.println(i); 
     } 
    } 

    public static void main(String args[]) 
    { 
     MyThread mt=new MyThread(); 
     MyThread mt1=new MyThread(); 
     mt.start(); 
     mt.start(); 
    } 
} 

上面的代碼編譯,但我得到了在運行時的非法狀態異常。這是什麼原因?

回答

2

您正在開始您的第一個Threadmt兩次,而不是從mt1開始。

一旦運行,Thread將拋出IllegalStateException如果您嘗試再次嘗試start