日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java单线程异步_Java 实现异步调用

發(fā)布時(shí)間:2024/3/24 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java单线程异步_Java 实现异步调用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先 我遇到的問(wèn)題是 接口調(diào)用時(shí)需要更新緩存 而更新緩存又是個(gè)說(shuō)快不快的過(guò)程 所以打算做異步調(diào)用 返回我所需要的結(jié)果即可 ,至于緩存什么時(shí)候更新完 就不是我所需要關(guān)注的了

廢話不多說(shuō) 上代碼

public class MyExecutor {

private ExecutorService executor = Executors.newCachedThreadPool() ;

public void fun() throws Exception {

executor.submit(new Runnable(){

@override

public void run() {

try {

//要執(zhí)行的業(yè)務(wù)代碼,我們這里沒(méi)有寫(xiě)方法,可以讓線程休息幾秒進(jìn)行測(cè)試

Thread.sleep(10000);

System.out.print("睡夠啦~");

}catch(Exception e) {

throw new RuntimeException("報(bào)錯(cuò)啦!!");

}

}

});

}

}

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("業(yè)務(wù)程序報(bào)錯(cuò)啦!!");

}

}

}

好啦 代碼到此結(jié)束 (ps:純手打 若有錯(cuò) 請(qǐng)見(jiàn)諒)

運(yùn)行主方法

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

然后(睡夠啦~)

也就是說(shuō) 在需要異步執(zhí)行的方法未執(zhí)行完畢時(shí) 主程序已經(jīng)返回結(jié)果了? 不需要繼續(xù)等待 這樣可以保證程序先返回結(jié)果 再繼續(xù)執(zhí)行不需要等待的繁瑣的任務(wù)? 當(dāng)然也可以加一些方法去判斷異步方法是否執(zhí)行完畢。

說(shuō)一下Executors類(lèi)

這個(gè)類(lèi)是用來(lái)創(chuàng)建線程池的

有這么幾個(gè)方法

1、newFixedThreadPool() 創(chuàng)建固定大小的線程池 線程池的大小一旦達(dá)到最大值就會(huì)保持不變,如果某個(gè)線程因?yàn)閳?zhí)行異常而結(jié)束,那么線程池會(huì)補(bǔ)充一個(gè)新線程

2、newCachedThreadPool() 創(chuàng)建一個(gè)可緩存的線程池,如果線程池的大小超過(guò)了處理任務(wù)所需要的線程,那么就會(huì)回收部分空閑(60s不執(zhí)行任務(wù))的線程,當(dāng)任務(wù)數(shù)量增加時(shí),此線程池又可以智能的添加新線程來(lái)處理任務(wù)。此線程池不會(huì)對(duì)線程池大小做限制,線程池大小完全依賴于系統(tǒng)(JVM)能夠創(chuàng)建的最大線程大小

3、newSingleThreadExecutor() 創(chuàng)建一個(gè)單線程的線程池。這個(gè)線程池只有線程在工作,也就是相當(dāng)于單線程串行執(zhí)行所有任務(wù)。如果這個(gè)唯一的線程因?yàn)楫惓=Y(jié)束,那么會(huì)有一個(gè)新的線程來(lái)替代它。此線程池保證所有任務(wù)的執(zhí)行順序按照任務(wù)的提交順序執(zhí)行

4、newScheduledThreadPool() 創(chuàng)建一個(gè)大小無(wú)限的線程池,此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求

5、newSingleThreadScheduledExecutor() 創(chuàng)建一個(gè)單線程的線程池。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求

---------------------

作者:LittleYoungMan

來(lái)源:CSDN

原文:https://blog.csdn.net/java_ying/article/details/79803470

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

總結(jié)

以上是生活随笔為你收集整理的java单线程异步_Java 实现异步调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。