Java Thread start()方法

2019-10-16 22:24:14

Thread類的start()方法用於開始執行執行緒。 此方法的結果是執行兩個並行執行的執行緒:當前執行緒(從呼叫start方法返回)和另一個執行緒(執行其run方法)。

start()方法在內部呼叫Runnable介面的run()方法,以在單獨的執行緒中執行run()方法中指定的程式碼。

啟動執行緒執行以下任務:

  • 它統計一個新執行緒
  • 執行緒從初始狀態移動到可執行狀態。
  • 當執行緒有機會執行時,它的目標run()方法將執行。

語法

public void start()

返回值

此方法沒有返回值。

異常

  • IllegalThreadStateException - 如果多次呼叫start()方法,則丟擲此異常。

範例1: 通過擴充套件Thread

public class StartExp1 extends Thread  
{    
    public void run()  
    {    
        System.out.println("Thread is running...");    
    }    
    public static void main(String args[])  
    {    
        StartExp1 t1=new StartExp1();    
        // this will call run() method  
        t1.start();    
    }    
}

執行上面範例程式碼,得到以下結果:

Thread is running...

範例2: 通過實現Runnable介面

public class StartExp2  implements Runnable  
{    
    public void run()  
    {    
        System.out.println("Thread is running...");    
    }    
    public static void main(String args[])  
    {    
        StartExp2  m1=new StartExp2 ();    
        Thread t1 =new Thread(m1);    
        // this will call run() method  
        t1.start();    
    }    
}

執行上面範例程式碼,得到以下結果:

Thread is running...

範例3: 多次呼叫start()方法時

public class StartExp3 extends Thread  
{    
    public void run()  
    {    
    System.out.println("First thread running...");    
    }    
    public static void main(String args[])  
    {    
        StartExp3 t1=new StartExp3();    
        t1.start();    
        // It will through an exception because you are calling start() method more than one time   
        t1.start();    
    }    
}

執行上面範例程式碼,得到以下結果:

First thread running...
Exception in thread "main" java.lang.IllegalThreadStateException
    at java.lang.Thread.start(Thread.java:708)
    at StartExp3.main(StartExp3.java:12)