本篇是我學(xué)習(xí)Java的多線程編程的備忘錄,僅是我自己學(xué)習(xí)多線程時的一些片面理解,希望多多少少能幫助到觀看本文的朋友,下面進入正題。
Thread是類 & Runnable是接口
- Runnable接口僅有一個run()抽象方法。
@FunctionalInterface
public interface Runnable {
/**
* When an object implementing interface <code>Runnable</code> is used
* to create a thread, starting the thread causes the object's
* <code>run</code> method to be called in that separately executing
* thread.
* <p>
* The general contract of the method <code>run</code> is that it may
* take any action whatsoever.
*
* @see java.lang.Thread#run()
*/
public abstract void run();
}
- Thread類繼承并實現(xiàn)了Runnable接口的run()方法。
public class Thread implements Runnable {
//僅摘取部分代碼
/* What will be run. */
private Runnable target;
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
private void init(ThreadGroup g, Runnable target, String name, long stackSize) {
//僅摘取部分代碼,其他省略
this.target = target;
//僅摘取部分代碼,其他省略
}
@Override //重寫Runnable接口的run()抽象方法
public void run() {
if (target != null) {
target.run();
}
}
}
Thread類是一個線程類,它所繼承的Runnable接口的run()方法,就是這個線程類要完成的具體工作,使用Thread類實例不可以直接調(diào)用run ()方法完成工作,因為那樣run()方法還是在main線程中完成,并沒有開啟子線程,要使run()方法工作在多線程下,必須使用Thread類的start()方法來啟動,start()會自動分配子線程并自動執(zhí)行run()方法。