java 實(shí)現(xiàn)多線程的方法總結(jié)
java 實(shí)現(xiàn)多線程的三種方法
在java中,有三種方法可以實(shí)現(xiàn)多線程。第一種方法:繼承Thread類,重寫run函數(shù)。第二種方法:實(shí)現(xiàn)Runnable接口,重寫run函數(shù)。第三種方法:實(shí)現(xiàn)Callable接口,重寫call函數(shù)。本文章將通過(guò)實(shí)例講解這三種方法如何實(shí)現(xiàn)多線程。需要的可以參考一下。
(1)繼承Thread類,重寫run函數(shù)。
class xx extends Thread{
public void run(){
Thread.sleep(1000) //線程休眠1000毫秒,sleep使線程進(jìn)入Block狀態(tài),并釋放資源
}}
開啟線程:
對(duì)象.start() //啟動(dòng)線程,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接口,重寫call函數(shù)
Callable是類似于Runnable的接口,實(shí)現(xiàn)Callable接口的類和實(shí)現(xiàn)Runnable的類都是可被其它線程執(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)文章
Java基于ReadWriteLock實(shí)現(xiàn)鎖的應(yīng)用
這篇文章主要介紹了Java基于ReadWriteLock實(shí)現(xiàn)鎖的應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
java開發(fā)分布式服務(wù)框架Dubbo原理機(jī)制詳解
這篇文章主要為大家介紹了java開發(fā)分布式服務(wù)框架Dubbo的原理機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
Java?FTP協(xié)議實(shí)現(xiàn)文件下載功能
FTP(File?Transfer?Protocol)就是文件傳輸協(xié)議。通過(guò)FTP客戶端從遠(yuǎn)程FTP服務(wù)器上拷貝文件到本地計(jì)算機(jī)稱為下載,將本地計(jì)算機(jī)上的文件復(fù)制到遠(yuǎn)程FTP服務(wù)器上稱為上傳,上傳和下載是FTP最常用的兩個(gè)功能2022-11-11
如何用java給文件加密的簡(jiǎn)單實(shí)現(xiàn)
文件加密,簡(jiǎn)單來(lái)說(shuō)就是把文件讀取出來(lái),把讀取出來(lái)的字節(jié)碼數(shù)組進(jìn)行遍歷,把每一個(gè)碼值和一個(gè)秘鑰(隨便一個(gè)數(shù))進(jìn)行異或運(yùn)算,將運(yùn)算后的結(jié)果全部寫入到文件里,這篇文章主要介紹了如何用java給文件加密的簡(jiǎn)單實(shí)現(xiàn),需要的朋友可以參考下2023-12-12
MyBatis-Plus實(shí)現(xiàn)連表查詢的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于MyBatis-Plus實(shí)現(xiàn)連表查詢的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
SpringBoot通過(guò)自定義注解與異步來(lái)管理日志流程
實(shí)現(xiàn)日志管理說(shuō)實(shí)話方式還挺多,個(gè)人使用過(guò)直接在Controller代碼里面寫、AOP+自定義注解、ConstraintValidator。本文主要和大家講的是自定義注解與異步來(lái)管理日志流程,感興趣的可以了解一下2023-03-03
Spring Boot集成netty實(shí)現(xiàn)客戶端服務(wù)端交互示例詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot集成netty實(shí)現(xiàn)客戶端服務(wù)端交互的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
java實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件
這篇文章主要介紹了java實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

