新聞中心
Java 開啟多線程常見(jiàn)的4種方法

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出蔚縣免費(fèi)做網(wǎng)站回饋大家。
在 Java 編程中,多線程是一種非常實(shí)用的技術(shù),它可以讓程序在執(zhí)行過(guò)程中同時(shí)處理多個(gè)任務(wù),本文將介紹 Java 開啟多線程的四種常見(jiàn)方法,包括繼承 Thread 類、實(shí)現(xiàn) Runnable 接口、使用 Callable 和 FutureTask 接口以及使用 ExecutorService。
繼承 Thread 類
1、1 創(chuàng)建自定義線程類
要?jiǎng)?chuàng)建一個(gè)自定義線程類,需要繼承 Thread 類,并重寫其 run() 方法,run() 方法中的代碼將在新線程中執(zhí)行。
class MyThread extends Thread {
@Override
public void run() {
// 在這里編寫線程要執(zhí)行的任務(wù)代碼
}
}
1、2 啟動(dòng)線程
創(chuàng)建好自定義線程類后,可以通過(guò)以下方式啟動(dòng)線程:
MyThread myThread = new MyThread(); myThread.start(); // 啟動(dòng)線程
實(shí)現(xiàn) Runnable 接口
2、1 創(chuàng)建實(shí)現(xiàn) Runnable 接口的類
要?jiǎng)?chuàng)建一個(gè)實(shí)現(xiàn) Runnable 接口的類,需要實(shí)現(xiàn) run() 方法,run() 方法中的代碼將在新線程中執(zhí)行。
class MyRunnable implements Runnable {
@Override
public void run() {
// 在這里編寫線程要執(zhí)行的任務(wù)代碼
}
}
2、2 將實(shí)現(xiàn)了 Runnable 接口的類作為參數(shù)傳遞給 Thread 類的構(gòu)造函數(shù),然后調(diào)用 start() 方法啟動(dòng)線程。
Thread thread = new Thread(new MyRunnable()); thread.start(); // 啟動(dòng)線程
使用 Callable 和 FutureTask 接口
3、1 實(shí)現(xiàn) Callable 接口
要?jiǎng)?chuàng)建一個(gè)實(shí)現(xiàn) Callable 接口的類,需要實(shí)現(xiàn) call() 方法,call() 方法中的代碼將在新線程中執(zhí)行,并返回一個(gè)結(jié)果,可以通過(guò) FutureTask 將 call() 方法的結(jié)果包裝成一個(gè)可獲取的結(jié)果對(duì)象。
import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; class MyCallable implements Callable{ @Override public Integer call() throws Exception { // 在這里編寫線程要執(zhí)行的任務(wù)代碼,并返回一個(gè)結(jié)果 return result; } }
3、2 將實(shí)現(xiàn)了 Callable
import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import java.util.concurrent.ExecutionException; Callablecallable = new MyCallable(); FutureTask futureTask = new FutureTask<>(callable); Thread thread = new Thread(futureTask); thread.start(); // 啟動(dòng)線程,并在需要時(shí)獲取結(jié)果:futureTask.get();
使用 ExecutorService(推薦)
4、1 實(shí)現(xiàn) ScheduledExecutorService、ExecutorService、ThreadPoolExecutor、WorkStealingPool、ForkJoinPool、SynchronousQueueExecutor、SingleThreadExecutor、PriorityBlockingQueueExecutor、ScheduledThreadPoolExecutor、CachedThreadPoolExecutor、LinkedBlockingQueueExecutor、RejectedExecutionHandler等接口或類的類庫(kù)提供了豐富的線程池管理功能,可以直接使用這些類庫(kù)來(lái)創(chuàng)建和管理線程池,可以使用 ScheduledExecutorService 實(shí)現(xiàn)定時(shí)任務(wù)。
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.concurrent.Future; // 可以用于提交任務(wù)并獲取任務(wù)結(jié)果(推薦) import java.util.concurrent.atomic.AtomicInteger; // 可以用于計(jì)數(shù)器等場(chǎng)景(推薦) (注:此為自 Java SE7u6以來(lái)引入的新特性) // ... 其他推薦使用的類庫(kù)接口或類 ... (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引入的新特性) (注:此為自 Java SE7u6以來(lái)引
網(wǎng)頁(yè)名稱:Java開啟多線程常見(jiàn)的4種方法
分享地址:http://www.dlmjj.cn/article/copipij.html


咨詢
建站咨詢
