中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現異步調用的案例分析

發布時間:2020-10-13 15:43:05 來源:億速云 閱讀:146 作者:小新 欄目:編程語言

小編給大家分享一下Java實現異步調用的案例分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

首先 我遇到的問題是 接口調用時需要更新緩存 而更新緩存又是個說快不快的過程 所以打算做異步調用 返回我所需要的結果即可 ,至于緩存什么時候更新完 就不是我所需要關注的了

廢話不多說 上代碼

public class MyExecutor {
    private ExecutorService executor = Executors.newCachedThreadPool() ;
    public void fun() throws Exception {
        executor.submit(new Runnable(){
            @override
                public void run() {
                    try {
                        //要執行的業務代碼,我們這里沒有寫方法,可以讓線程休息幾秒進行測試
                        Thread.sleep(10000);
                        System.out.print("睡夠啦~");
                    }catch(Exception e) {
                        throw new RuntimeException("報錯啦!!");
                    }
                }
        });
    }
}
public class Demo{
    
    public static void main(String[] args) {
        
         MyExecutor  myExecutor = new MyExecutor();
         try {
            myExecutor.fun();
            System.our.print("你先睡著,我先回家啦~");
        }catch(Exception e) {
             throw new RuntimeException("業務程序報錯啦!!");
        }
    }
}

好啦 代碼到此結束 (ps:純手打 若有錯 請見諒)

運行主方法

會先打印(你先睡著,我先回家啦~)

然后(睡夠啦~)

也就是說 在需要異步執行的方法未執行完畢時 主程序已經返回結果了  不需要繼續等待 這樣可以保證程序先返回結果 再繼續執行不需要等待的繁瑣的任務  當然也可以加一些方法去判斷異步方法是否執行完畢。

說一下Executors類

這個類是用來創建線程池的

有這么幾個方法

1、newFixedThreadPool() 創建固定大小的線程池 線程池的大小一旦達到最大值就會保持不變,如果某個線程因為執行異常而結束,那么線程池會補充一個新線程

2、newCachedThreadPool() 創建一個可緩存的線程池,如果線程池的大小超過了處理任務所需要的線程,那么就會回收部分空閑(60s不執行任務)的線程,當任務數量增加時,此線程池又可以智能的添加新線程來處理任務。此線程池不會對線程池大小做限制,線程池大小完全依賴于系統(JVM)能夠創建的最大線程大小

3、newSingleThreadExecutor() 創建一個單線程的線程池。這個線程池只有線程在工作,也就是相當于單線程串行執行所有任務。如果這個唯一的線程因為異常結束,那么會有一個新的線程來替代它。此線程池保證所有任務的執行順序按照任務的提交順序執行

4、newScheduledThreadPool() 創建一個大小無限的線程池,此線程池支持定時以及周期性執行任務的需求

5、newSingleThreadScheduledExecutor() 創建一個單線程的線程池。此線程池支持定時以及周期性執行任務的需求

看完了這篇文章,相信你對Java實現異步調用的案例分析有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

葫芦岛市| 深州市| 且末县| 玛曲县| 扎赉特旗| 雅安市| 富裕县| 屏东县| 通许县| 漳浦县| 萍乡市| 元氏县| 高州市| 潞西市| 新巴尔虎右旗| 曲阜市| 龙山县| 林甸县| 宜城市| 淮安市| 鄂温| 翁牛特旗| 马公市| 肇州县| 海南省| 宁夏| 兴山县| 石景山区| 修武县| 凯里市| 屏东市| 高雄县| 沐川县| 沂水县| 武冈市| 信阳市| 建湖县| 资讯| 嘉义市| 筠连县| 安徽省|