最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java多線程實現(xiàn)之Callable詳解

 更新時間:2023年08月26日 09:47:12   作者:not coder  
這篇文章主要介紹了Java多線程實現(xiàn)之Callable詳解,Callable是一個接口,用于實現(xiàn)多線程,與實現(xiàn)Runnable類似,但是功能更強大,通過實現(xiàn)Callable接口,我們需要重寫call()方法,該方法可以在任務(wù)結(jié)束后提供一個返回值,需要的朋友可以參考下

Java多線程實現(xiàn)之Callable接口

(1)java.util.concurrent.Callable是一個泛型接口,只有一個call()方法

(2)call()方法拋出異常Exception異常,且返回一個指定的泛型類對象

例1:利用Callable接口創(chuàng)建子線程類:

package com.my.frame;
import java.util.concurrent.Callable;
public class ThreadCall implements Callable<String> {
    @Override
    public String call() throws Exception {
        // TODO Auto-generated method stub
        System.out.println("=====");
        return "9999";
    }
}
package com.my.frame;
import java.util.concurrent.FutureTask;
public class TestThread {
    public static void main(String[] args) {
        FutureTask<String> ft = new FutureTask<>(new ThreadCall());
        new Thread(ft).start();
    }
}

例2:

        Callable<String> callable = new Callable<String>() {
            @Override
            public String call() throws Exception {
                try {
                    Thread.sleep(1500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return "成功";
            }
        };
        ExecutorService executorService = Executors.newCachedThreadPool();
        Future<String> future = executorService.submit(callable);
        String result = null;
        try {
            result = future.get();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("result:" + result);

Callable 與 Runnable

都是以 able 結(jié)束,可以開啟線程

Callable 有返回值

那么現(xiàn)在就有一個問題,子現(xiàn)場是耗時操作的,他的返回值返回給誰用呢,主線程如何不阻塞的情況下拿到子線程的返回值呢?

我們接下來解釋這個問題

首先,executorService.submit(callable) 中,executor 調(diào)用的不是 execute(callable) 而是 submit(callable)

然后配合 future.get() 去取值,這里的取值,是阻塞式的,能保證我們值的可靠性,這是 Java 在 API 層能做到的上限了。

其中,future 提供一種方法讓主線程能夠主動去詢問后臺線程是否執(zhí)行完畢,他就是:future.isDone()

到此這篇關(guān)于Java多線程實現(xiàn)之Callable詳解的文章就介紹到這了,更多相關(guān)Java多線程Callable內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java組件commons-fileupload實現(xiàn)文件上傳

    java組件commons-fileupload實現(xiàn)文件上傳

    這篇文章主要介紹了java借助commons-fileupload組件實現(xiàn)文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • springboot中PostMapping正常接收json參數(shù)后返回404問題

    springboot中PostMapping正常接收json參數(shù)后返回404問題

    這篇文章主要介紹了springboot中PostMapping正常接收json參數(shù)后返回404問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java?web實現(xiàn)購物車案例

    Java?web實現(xiàn)購物車案例

    這篇文章主要為大家詳細介紹了Java?web實現(xiàn)購物車案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 解決@Autowired報錯Could not autowire. No beans of ‘XXX‘ type found問題

    解決@Autowired報錯Could not autowire. No bea

    介紹了在IDEA中使用@Autowired報錯Couldnot autowire. No beans of 'XXX' type found的解決方法,原因是@Autowired在注入service時,由于service接口沒有實現(xiàn)類,而mybatis僅需提供Dao接口,導(dǎo)致@Autowired無法識別
    2024-12-12
  • 23種設(shè)計模式(8) java外觀模式

    23種設(shè)計模式(8) java外觀模式

    這篇文章主要為大家詳細介紹了23種設(shè)計模式之java外觀模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Mybatis?sqlMapConfig.xml中的mappers標簽使用

    Mybatis?sqlMapConfig.xml中的mappers標簽使用

    這篇文章主要介紹了Mybatis?sqlMapConfig.xml中的mappers標簽使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • 一篇文章帶你了解Java方法的使用

    一篇文章帶你了解Java方法的使用

    這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Java Benchmark 基準測試的實例詳解

    Java Benchmark 基準測試的實例詳解

    這篇文章主要介紹了Java Benchmark 基準測試的實例詳解的相關(guān)資料,這里提供實例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 手把手帶你實現(xiàn)第一個Mybatis程序

    手把手帶你實現(xiàn)第一個Mybatis程序

    這篇文章主要介紹了mybatis實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-07-07
  • Java利用HttpClient模擬POST表單操作應(yīng)用及注意事項

    Java利用HttpClient模擬POST表單操作應(yīng)用及注意事項

    本文主要介紹JAVA中利用HttpClient模擬POST表單操作,希望對大家有所幫助。
    2016-04-04

最新評論

宾阳县| 北票市| 嵩明县| 皮山县| 乳山市| 望谟县| 凤山市| 桑植县| 隆尧县| 商都县| 新乡县| 阆中市| 岐山县| 仲巴县| 克拉玛依市| 福贡县| 景泰县| 霍城县| 石渠县| 汤原县| 玛纳斯县| 玉树县| 盐亭县| 五华县| 利川市| 淮安市| 滦南县| 石家庄市| 普兰店市| 阜阳市| 贵阳市| 深州市| 日喀则市| 白城市| 富顺县| 泸西县| 宣汉县| 保靖县| 永泰县| 正宁县| 吴川市|