- 實現Runnable接口
public class MyRunnable implements Runnable{
public MyRunnable() {
System.out.println("MyRunnable's constructor!");
}
@Override
public void run() {
System.out.println("I'mrunning");
}
public static voidmain(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread t = new Thread(myRunnable);
t.start();
}
}
- 繼承Thread類
public class MyThread extends Thread {
public MyThread() {
System.out.println("MyThread's constructor!");
}
@Override
public void run() {
System.out.println("I'mrunning");
}
public static voidmain(String[] args) {
MyThread t = new MyThread();
t.start();
}
}
以上兩種方法哪種更好呢?
第一種方式使用了一個Runnable實例,第二種方式則要求繼承Thread類。雖然第二種方式看起來使用更加簡單,但是卻限制了用戶類必須繼承Thread。第一種方式將Runnable任務與運行Runnable任務的Thread對象分離開,更加靈活,也能更好地與高層的線程管理API結合使用。因此推薦使用第一種方法。