java 實(shí)現(xiàn)多線(xiàn)程的方法總結(jié)
java 實(shí)現(xiàn)多線(xiàn)程的三種方法
在java中,有三種方法可以實(shí)現(xiàn)多線(xiàn)程。第一種方法:繼承Thread類(lèi),重寫(xiě)run函數(shù)。第二種方法:實(shí)現(xiàn)Runnable接口,重寫(xiě)run函數(shù)。第三種方法:實(shí)現(xiàn)Callable接口,重寫(xiě)call函數(shù)。本文章將通過(guò)實(shí)例講解這三種方法如何實(shí)現(xiàn)多線(xiàn)程。需要的可以參考一下。
(1)繼承Thread類(lèi),重寫(xiě)run函數(shù)。
class xx extends Thread{ public void run(){ Thread.sleep(1000) //線(xiàn)程休眠1000毫秒,sleep使線(xiàn)程進(jìn)入Block狀態(tài),并釋放資源 }}
開(kāi)啟線(xiàn)程:
對(duì)象.start() //啟動(dòng)線(xiàn)程,run函數(shù)運(yùn)行
(2)實(shí)現(xiàn)Runnable接口,代碼如下
class MyThread implements Runnable { private String name; public MyThread(String name) { super(); this.name = name; } @Override public void run() { for(int i = 0 ; i < 200; i++) { System.out.println("Thread"+name+"--->"+i); } } } public class ThreadDemo { public static void main(String[] args) { MyThread a = new MyThread("a"); MyThread b = new MyThread("b"); MyThread c = new MyThread("c"); new Thread(a).start(); new Thread(b).start(); new Thread(c).start(); } }
(3)實(shí)現(xiàn)Callable接口,重寫(xiě)call函數(shù)
Callable是類(lèi)似于Runnable的接口,實(shí)現(xiàn)Callable接口的類(lèi)和實(shí)現(xiàn)Runnable的類(lèi)都是可被其它線(xiàn)程執(zhí)行的任務(wù)。
Callable和Runnable有幾點(diǎn)不同:
- Callable規(guī)定的方法是call(),而Runnable規(guī)定的方法是run().
- Callable的任務(wù)執(zhí)行后可返回值,而Runnable的任務(wù)是不能返回值的
- call()方法可拋出異常,而run()方法是不能拋出異常的。
- 運(yùn)行Callable任務(wù)可拿到一個(gè)Future對(duì)象,F(xiàn)uture表示異步計(jì)算的結(jié)果。它提供了檢查計(jì)算是否完成的方法,以等待計(jì)算的完成,并檢索計(jì)算的結(jié)果.通過(guò)Future對(duì)象可了解任務(wù)執(zhí)行情況,可取消任務(wù)的執(zhí)行,還可獲取任務(wù)執(zhí)行的結(jié)果
Java Callable 代碼示例:
class TaskWithResult implements Callable<String> { private int id; public TaskWithResult(int id) { this.id = id; } @Override public String call() throws Exception { return "result of TaskWithResult " + id; } } public class CallableTest { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService exec = Executors.newCachedThreadPool(); ArrayList<Future<String>> results = new ArrayList<Future<String>>(); //Future 相當(dāng)于是用來(lái)存放Executor執(zhí)行的結(jié)果的一種容器 for (int i = 0; i < 10; i++) { results.add(exec.submit(new TaskWithResult(i))); } for (Future<String> fs : results) { if (fs.isDone()) { System.out.println(fs.get()); } else { System.out.println("Future result is not yet complete"); } } exec.shutdown(); } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 詳解java裝飾模式(Decorator Pattern)
- Java設(shè)計(jì)模式之裝飾模式(Decorator模式)介紹
- java設(shè)計(jì)模式之裝飾模式詳細(xì)介紹
- JavaScript對(duì)象創(chuàng)建模式實(shí)例匯總
- 淺談java 增強(qiáng)型的for循環(huán) for each
- Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例
- Java從控制臺(tái)讀入數(shù)據(jù)的幾種方法總結(jié)
- Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法
- 淺談Java的String中的subString()方法
- 淺析Java中comparator接口與Comparable接口的區(qū)別
- java 裝飾模式(Decorator Pattern)詳解及實(shí)例代碼
相關(guān)文章
Idea 配置國(guó)內(nèi) Maven 源的圖文教程
這篇文章主要介紹了Idea 配置國(guó)內(nèi) Maven 源的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11idea與eclipse項(xiàng)目相互導(dǎo)入的過(guò)程(圖文教程)
這篇文章主要介紹了idea與eclipse項(xiàng)目相互導(dǎo)入的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03spring boot實(shí)現(xiàn)上傳圖片并在頁(yè)面上顯示及遇到的問(wèn)題小結(jié)
最近在使用spring boot搭建網(wǎng)站的過(guò)程之中遇到了有點(diǎn)小問(wèn)題,最終解決方案是在main目錄下新建了一個(gè)webapp文件夾,并且對(duì)其路徑進(jìn)行了配置,本文重點(diǎn)給大家介紹spring boot實(shí)現(xiàn)上傳圖片并在頁(yè)面上顯示功能,需要的朋友參考下吧2017-12-12java后端操作樹(shù)結(jié)構(gòu)的案例代碼
這篇文章主要介紹了java后端操作樹(shù)結(jié)構(gòu),樹(shù)結(jié)構(gòu)的三種組裝方式(遞歸.雙層for循環(huán),map),通過(guò)實(shí)例代碼介紹了使用遞歸查詢(xún)某個(gè)節(jié)點(diǎn)所在的樹(shù)結(jié)構(gòu),需要的朋友可以參考下2023-10-10Java實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)以及速度的對(duì)比,感興趣的可以了解一下2022-07-07Java壓縮和解壓縮ZIP文件實(shí)戰(zhàn)案例
這篇文章主要給大家介紹了關(guān)于Java壓縮和解壓縮ZIP文件的相關(guān)資料,ZIP是一種較為常見(jiàn)的壓縮形式,最近項(xiàng)目中遇到了再Java中壓縮和解壓縮zip文件的需求,特此分享給大家,需要的朋友可以參考下2023-07-07Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法
下面小編就為大家?guī)?lái)一篇Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10Mybatis Plus 增刪改查的實(shí)現(xiàn)(小白教程)
本文主要介紹了Mybatis Plus 增刪改查,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09