如果執行緒是實現Runnable
介面的,則呼叫Thread
類的run()
方法,否則此方法不執行任何操作並返回。 當run()
方法呼叫時,將執行run()
方法中指定的程式碼。可以多次呼叫run()
方法。
可以使用start()
方法或通過呼叫run()
方法本身來呼叫run()
方法。 但是當使用run()
方法呼叫自身時,它會產生問題。
範例1: 使用start()
方法呼叫run()
方法
public class RunExp1 implements Runnable
{
public void run()
{
System.out.println("Thread is running...");
}
public static void main(String args[])
{
RunExp1 r1=new RunExp1();
Thread t1 =new Thread(r1);
// this will call run() method
t1.start();
}
}
執行上面範例程式碼,得到以下結果:
Thread is running...
範例2 :使用run()
方法本身呼叫run()
方法
public class RunExp2 extends Thread
{
public void run()
{
System.out.println("running...");
}
public static void main(String args[])
{
RunExp2 t1=new RunExp2 ();
// It does not start a separate call stack
t1.run();
}
}
執行上面範例程式碼,得到以下結果:
running...
在這種情況下,它轉到當前的呼叫堆疊而不是新呼叫堆疊的開頭。
範例3:多次呼叫run()
方法
public class RunExp3 extends Thread
{
public void run()
{
for(int i=1;i<6;i++)
{
try
{
Thread.sleep(500);
}catch(InterruptedException e){System.out.println(e);}
System.out.println(i);
}
}
public static void main(String args[])
{
RunExp3 t1=new RunExp3();
RunExp3 t2=new RunExp3();
t1.run();
t2.run();
}
}
執行上面範例程式碼,得到以下結果:
1
2
3
4
5
1
2
3
4
5
在上面的例子3 中,沒有內容切換,因為這裡t1
和t2
被視為普通物件而不是執行緒物件。