Java Callable接口實(shí)現(xiàn)細(xì)節(jié)詳解
代碼如下
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* @author lzq
* @data 2020/4/30 0030 - 下午 4:02
*/
public class Test2 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyThread thread=new MyThread();
FutureTask task = new FutureTask(thread);
new Thread(task,"a").start();
new Thread(task,"b").start();
System.out.println(task.get());
}
}
class MyThread implements Callable<String> {
@Override
public String call() {
System.out.println("實(shí)現(xiàn)callable");
return "得到返回值";
}
}
執(zhí)行結(jié)果為:

上面是使用Callable接口簡單實(shí)現(xiàn)多線程,使用這個(gè)接口要使用FutrueTask類作為簡單的適配類,因?yàn)門hread構(gòu)造方法只能接受Runnable接口參數(shù),下面源碼中看出FutrueTask的對象為什么也能作為Runnable型參數(shù)傳給Thread構(gòu)造方法

再分析一下結(jié)果,可以看到明明啟動了a,b兩個(gè)線程,但是只輸出了一個(gè)線程的結(jié)果,這是因?yàn)檫\(yùn)行的結(jié)果會被緩存,使得線程的執(zhí)行效率變高。還有一點(diǎn)就是獲取線程返回值的get方法可能會產(chǎn)生阻塞,一般放在最后或者使用異步通信來處理。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java集合 collection-list-LinkedList詳解
下面小編就為大家?guī)硪黄猨ava集合 collection-list-LinkedList詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
Springboot以Repository方式整合Redis的方法
這篇文章主要介紹了Springboot以Repository方式整合Redis的方法,本文通過圖文并茂實(shí)例詳解給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
java異步編程CompletableFuture使用示例詳解
這篇文章主要為大家介紹了java異步編程CompletableFuture使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
理解Java注解及Spring的@Autowired是如何實(shí)現(xiàn)的
今天通過本文帶領(lǐng)大家學(xué)習(xí)注解的基礎(chǔ)知識,學(xué)習(xí)Spring的@Autowired是怎么實(shí)現(xiàn)的,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07
springBoot定時(shí)任務(wù)處理類的實(shí)現(xiàn)代碼
這篇文章主要介紹了springBoot定時(shí)任務(wù)處理類,需要的朋友可以參考下2018-06-06
WxJava微信公眾號開發(fā)入門實(shí)戰(zhàn)
本文主要介紹了WxJava微信公眾號開發(fā)入門實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Intellij Mybatis連接Mysql數(shù)據(jù)庫
最近在搞android的項(xiàng)目,在開發(fā)過程中遇到了好多問題,今天小編給大家說下mybatis連接MySQL數(shù)據(jù)庫的方法,感興趣的朋友跟著小編一起學(xué)習(xí)吧2016-10-10

