Thread類的核心功能是進行線程的啟動,但是如果一個類直接繼承Thread類,就會造成單繼承的局限。Java中有提供老人另一種實現(xiàn)模式:Runnable接口。該接口中只有一個run方法。這一點和Thread類是一致的。
范例:使用Runnable定義線程主體類
class RunThread implements Runnable{
private String title;
public RunThread(String title) {
this.title = title;
}
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("My thread title="+title+"i="+i);
}
}
}
但是,新的問題產(chǎn)生了。實現(xiàn)Runnable接口后,雖然實現(xiàn)了run方法,凡是沒有課start方法。此時,就需要我們關注Thread的構造方法。 publiv Thread(Runnable target),說明該構造函數(shù)可以使用Thread的構造方法進行實現(xiàn)線程啟動。
class RunThread implements Runnable{
private String title;
public RunThread(String title) {
this.title = title;
}
@Override
public void run() {
for(int i=0;i<10;i++){
System.out.println("My thread title="+title+"i="+i);
}
}
}
public class RunnableDemo {
public static void main(String args[]){
RunThread myThread1 = new RunThread("thread1");
new Thread(myThread1).start();
RunThread myThread2 = new RunThread("thread1");
new Thread(myThread2).start();
RunThread myThread3 = new RunThread("thread1");
new Thread(myThread3).start();
}
}
由于這樣的編碼方式顯得太繁瑣,而Runnable寫那么多純粹就實現(xiàn)了一個線程主體類的對象而已。因此,可以使用匿名內(nèi)部類的方法進行實現(xiàn)。
/**
* Created by liyubo on 2017/9/23.
* 使用匿名內(nèi)部類實現(xiàn)Runnable接口
*/
public class RunThreadDemo2 {
public static void main(String args[]){
new Thread(new Runnable() {
private String title;
@Override
public void run() {
for(int i=0;i<10;i++)
System.out.println("i="+i);
}
}).start();
}
}