最新国产好看的视频,伊人天堂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()方法,該方法可以在任務結束后提供一個返回值,需要的朋友可以參考下

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 結束,可以開啟線程

Callable 有返回值

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

我們接下來解釋這個問題

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

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

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

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

相關文章

  • 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接口,導致@Autowired無法識別
    2024-12-12
  • 23種設計模式(8) java外觀模式

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

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

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

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

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

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

    Java Benchmark 基準測試的實例詳解

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

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

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

    Java利用HttpClient模擬POST表單操作應用及注意事項

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

最新評論

电白县| 独山县| 新源县| 改则县| 冷水江市| 手机| 四子王旗| 邓州市| 九台市| 苏尼特右旗| 湘潭县| 岳阳县| 婺源县| 蛟河市| 循化| 仙游县| 盐城市| 浦城县| 霍林郭勒市| 丰城市| 漳州市| 塔河县| 建阳市| 民勤县| 上蔡县| 永春县| 九龙城区| 安化县| 鹤岗市| 印江| 清远市| 曲沃县| 大足县| 方正县| 靖西县| 航空| 罗江县| 云林县| 天台县| 扶绥县| 金秀|