class
mythread
extends
thread
}mythread(string name)
}
測試:
/*
* run與start執行方式的區別
*/mythread m1 = new mythread("micro");
mythread m2 = new mythread("xiaoma");
m1.start();//啟動新執行緒,可實現交替執行
m2.start();//一旦呼叫start方法,jvm會自動找到run方法去執行,可呼叫底層函式
m1.run();//如果直接執行run的方式,m1執行完再執行m2
m2.run();
參考jdk原始碼thread本身就實現了runnable介面,thread裡有乙個thread(runnable target)方法,可以傳入runnable的實現類,然後去執行run或則start方法。
class
mythread2
implements
runnable
@override
public
void run()
}}
測試:
/*
* 在實際開發中,很少直接使用繼承thread的方式去啟動多執行緒
* 而是使用實現runnable介面
*/system.out.println("thread啟動runnable實現類");
mythread2 m3 =
new mythread2("micro2");
mythread2 m4 =
new mythread2("xiaoma2");
newthread(m3).start();
newthread(m4).start();
system.out.println("賣票資源無法共享");
threadticket m5 = new threadticket();
threadticket m6 = new threadticket();
m5.start();//start有呼叫底層本地方法可以合理交替執行run方法
m6.start();//兩個執行緒,每個執行緒售票10張
//此售票方法,每個賣出了10張票,無法達到資源共享的目的
class
threadticket
extends
thread
else
}system.out.println("票數為"+ticket+" 售票結束");
}}
通過實現runnable介面的方法:
/*
* 如果使用runnable介面,就可以實現共享
*/threadticket2 m7 =
new threadticket2();
newthread(m7).start();
newthread(m7).start();//雖然兩個執行緒,但一共售出了10張票
//runnable介面實現資源共享的目的
class
threadticket2
implements
runnable
else
}system.out.println("剩餘票數為"+ticket+" 停止售票");
}}
Thread 與Runnable區別詳解
使用thread實現執行緒不能實現資源共享 class mythread extends thread public void run public class threaddemo02 使用runnable實現執行緒可以實現資源共享 class mythread implements runnab...
執行緒Thread與Runnable實現
當new 乙個thread的時候,就是在主線程的基礎上再開乙個子執行緒,cpu一會兒給主線程用,一會兒給子執行緒用,所以多執行緒會降低工作效率 1 thread 自己實現自己的run方法 public static voidmain string args throwsinterruptedexce...
Thread與Runnable的關係
public class threaddemo start 對於上面的這段 它的執行結果是 thread的run 方法 但這是為什麼呢?在看下面這段 public class threaddemo start 上述 的執行結果是 thread的run 方法 runnable的run方法 這就不得不說...