本篇是我學(xué)習(xí)Java的多線程編程的備忘錄户魏,僅是我自己學(xué)習(xí)多線程時(shí)的一些片面理解驶臊,希望多多少少能幫助到觀看本文的朋友,下面進(jìn)入正題叼丑。
Thread是類(lèi) & Runnable是接口
- Runnable接口僅有一個(gè)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類(lèi)繼承并實(shí)現(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 //重寫(xiě)Runnable接口的run()抽象方法
public void run() {
if (target != null) {
target.run();
}
}
}
Thread類(lèi)
是一個(gè)線程類(lèi),它所繼承的Runnable接口
的run()
方法星立,就是這個(gè)線程類(lèi)要完成的具體工作爽茴,使用Thread類(lèi)
實(shí)例不可以直接調(diào)用run ()方法完成工作,因?yàn)槟菢?code>run()方法還是在main線程
中完成绰垂,并沒(méi)有開(kāi)啟子線程
室奏,要使run()
方法工作在多線程下,必須使用Thread類(lèi)
的start()
方法來(lái)啟動(dòng)劲装,start()
會(huì)自動(dòng)分配子線程
并自動(dòng)執(zhí)行run()
方法窍奋。