站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

五種方法!Java創(chuàng)建多線程總結(jié)

本篇文章給大家?guī)砹岁P(guān)于java的相關(guān)知識,其中主要總結(jié)介紹了創(chuàng)建多線程的五種方法,包括了繼承Thread類、實現(xiàn)Runnable接口、實現(xiàn)Callable接口、繼承TimerTask類和通過線程池啟動多線程,希望對大家有幫助。

五種方法!Java創(chuàng)建多線程總結(jié)

推薦學(xué)習(xí):《java學(xué)習(xí)教程》

Java創(chuàng)建多線程的五種方法

  • 僅作為Java編程的交流和學(xué)習(xí),如有問題還望不吝賜教。歡迎補充和交流,轉(zhuǎn)載請注明!

(一)繼承Thread類

1.實現(xiàn)描述

  • 通過繼承Thread并且重寫其run( ),run方法中定義需要執(zhí)行的任務(wù)。創(chuàng)建后的子類通過調(diào)用start( )方法即可執(zhí)行線程方法。
  • 通過繼承Thread實現(xiàn)的線程類,多個線程間無法共享線程類的實例變量。需要創(chuàng)建不同Thread對象,自然不共享資源。

2.具體步驟

1)定義UserThread類,繼承Thread類
2)重寫run( )方法
3)創(chuàng)建UserThread對象
4)調(diào)用start( )方法

3.代碼實現(xiàn)

五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)

4.注意事項

  • 數(shù)據(jù)資源不共享,多個線程分別完成自己的任務(wù)。比如三個售票窗口同時售票,各自賣各自的票,會出現(xiàn)三個售票窗口出售同一張票的問題。

(二)實現(xiàn)Runnable接口

1.實現(xiàn)描述

  • 需要先定義一個類實現(xiàn)Runnable接口并重寫該接口的run( )方法,此run方法是線程執(zhí)行體。接著創(chuàng)建 Runnable實現(xiàn)類的對象,作為創(chuàng)建Thread對象的參數(shù)target,此Thread對象才是真正的線程對象。
  • 利用實現(xiàn)Runnable接口的線程類創(chuàng)建對象,可以實現(xiàn)線程之間的資源共享。

2.具體步驟

1)定義一個UserRun類,實現(xiàn)Runnble接口
2)重寫run( )方法
3)創(chuàng)建UserRun類的對象
4)創(chuàng)建Thread類的對象,UserRun類的對象作為Thread類構(gòu)造方法的參數(shù)
5)啟動線程

3.代碼實現(xiàn)

五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)

4.注意事項

  • 數(shù)據(jù)資源共享,多個線程共同完成一個任務(wù)(多個線程共享了創(chuàng)建線程對象的資源)。比如三個售票窗口(三個線程)同時售票(MyThread類中的ticket),三個線程共同使用資源。

(三)實現(xiàn)Callable接口

1.實現(xiàn)描述

  • Callable接口如同Runable接口的升級版,其提供的call( )方法將作為線程的執(zhí)行體,同時允許有返回值。
  • Callable對象不能直接作為Thread對象的target,因為Callable接口是 Java5 新增的接口,不是Runnable接口的子接口。
  • 對于這個問題的解決方案,就引入 Future接口,此接口可以接受call( )的返回值,RunnableFuture接口是Future接口和Runnable接口的子接口,可以作為Thread對象的target。

2.具體步驟

1)定義類UserCallable,實現(xiàn)Callable接口
2)重寫call( )方法
3)創(chuàng)建UserCallable的對象
4)創(chuàng)建RunnableFuture接口的子類FutureTask的對象,構(gòu)造函數(shù)的參數(shù)是UserCallable的對象
5)創(chuàng)建Thread類的對象,構(gòu)造函數(shù)的參數(shù)是FutureTask的對象
6)啟動線程

3.代碼實現(xiàn)

五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)

4.注意事項

  • 數(shù)據(jù)資源共享,多個線程共同完成一個任務(wù)(多個線程共享了創(chuàng)建線程對象的資源)。比如三個售票窗口(三個線程)同時售票(MyThread類中的ticket),三個線程共同使用資源。同時,線程調(diào)用完畢后還會帶有返回值

(四)繼承TimerTask類

1.實現(xiàn)描述

  • 定時器類Timer和TimerTask可以做為實現(xiàn)線程的另一種方式。
  • Timer是一種線程設(shè)施,用于安排以后在后臺線程中執(zhí)行的任務(wù)。可安排任務(wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行,可以看成一個定時器,可以調(diào)度TimerTask。
  • TimerTask是一個抽象類,實現(xiàn)了Runnable接口,所以具備了多線程的能力。

2.具體步驟

1)定義類UserTimerTask,繼承抽象類TimerTask
2)創(chuàng)建UserTask類的對象
3)創(chuàng)建Timer類的對象,設(shè)置任務(wù)的執(zhí)行策略

3.代碼實現(xiàn)

五種方法!Java創(chuàng)建多線程總結(jié)
五種方法!Java創(chuàng)建多線程總結(jié)

五種方法!Java創(chuàng)建多線程總結(jié)

4.注意事項

  • 定時器類創(chuàng)建線程
贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久九九精品99国产精品| 精品亚洲成A人无码成A在线观看| 亚洲av综合日韩| 99国产精品视频久久久久| 一色屋精品视频在线观看| 国产成人亚洲精品91专区手机| 国产精品成人免费视频网站京东| 手机看片在线精品观看| 亚洲精品成人片在线观看| 日韩精品人妻系列无码专区 | 日韩国产成人精品视频| 国语自产少妇精品视频蜜桃| 成人无码精品1区2区3区免费看| 亚洲国产精品日韩专区AV| 无码国产精品一区二区免费式直播| 精品人妻少妇嫩草AV无码专区| 精品国产高清久久久久久小说| .精品久久久麻豆国产精品| 亚洲一区二区三区国产精品无码| 99久热只有精品视频免费观看17| 无码精品视频一区二区三区| 亚洲福利精品电影在线观看| 日韩精品久久不卡中文字幕| 日韩精品无码中文字幕一区二区| 亚洲无码日韩精品第一页| 日韩精品亚洲专区在线观看 | 中文精品北条麻妃中文| 久久91这里精品国产2020| 精品久久久久中文字幕一区| 精品国产污污免费网站入口在线 | 97在线精品视频| 亚洲日韩精品一区二区三区| 国产精品天干天干| 国产精品一区二区三区高清在线 | 亚洲精品国产自在久久| 国产精品成人99久久久久91gav| 亚洲第一区精品观看| 国产天天综合永久精品日| 爱看精品福利视频观看| 久久精品成人国产午夜| 久久久国产乱子伦精品|