Thread與Runnable兩種多執行緒方式

2021-07-05 02:09:57 字數 1818 閱讀 1076

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方法 這就不得不說...