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

Java多線程中的Executor詳解

 更新時(shí)間:2023年12月06日 11:03:43   作者:小柴林  
這篇文章主要介紹了Java多線程中的Executor詳解,該接口提供了一種將任務(wù)提交與如何運(yùn)行每個(gè)任務(wù)的機(jī)制(包括線程使用、調(diào)度等細(xì)節(jié))解耦的方法,它通常使用預(yù)先創(chuàng)建線程而不是創(chuàng)建線程,需要的朋友可以參考下

Java多線程中的Executor

定義了執(zhí)行已提交Runnable任務(wù)的對(duì)象。該接口提供了一種將任務(wù)提交與如何運(yùn)行每個(gè)任務(wù)的機(jī)制(包括線程使用、調(diào)度等細(xì)節(jié))解耦的方法。它通常使用預(yù)先創(chuàng)建線程而不是創(chuàng)建線程。

例如new Thread(new(RunnableTask())).start() 每次都創(chuàng)建新線程來執(zhí)行任務(wù)。

現(xiàn)在可以使用以下方式來執(zhí)行任務(wù):

Executor executor = anExecutor;
executor.execute(new RunnableTask1());

然而,Executor接口并不嚴(yán)格要求異步執(zhí)行,在一個(gè)簡(jiǎn)易測(cè)試中,executor 可以在調(diào)用者的線程中立即運(yùn)行提交的任務(wù):

 class DirectExecutor implements Executor {
   public void execute(Runnable r) {
     //直接執(zhí)行提交者任務(wù)
     r.run();
   }
 }

更典型的情況是,任務(wù)在調(diào)用者的線程之外的某個(gè)線程中執(zhí)行。下面的執(zhí)行程序?yàn)槊總€(gè)任務(wù)生成一個(gè)新線程。

 class ThreadPerTaskExecutor implements Executor {
   public void execute(Runnable r) {
     //創(chuàng)建新線程來執(zhí)行任務(wù)
     new Thread(r).start();
   }
 }

許多Executor實(shí)現(xiàn)對(duì)如何以及何時(shí)調(diào)度任務(wù)施加了某種限制。下面的執(zhí)行程序?qū)⑷蝿?wù)的提交序列化到第二個(gè)執(zhí)行程序,演示了復(fù)合執(zhí)行程序。

class SerialExecutor implements Executor {
   final Queue<Runnable> tasks = new ArrayDeque<Runnable>();
   final Executor executor;
   Runnable active;
 
   SerialExecutor(Executor executor) {
     this.executor = executor;
   }
 
   public synchronized void execute(final Runnable r) {
     //創(chuàng)建一個(gè)任務(wù)并存放到雙端隊(duì)列
     tasks.offer(new Runnable() {
       public void run() {
         try {
           r.run();
         } finally {
           scheduleNext();
         }
       }
     });
     //開啟第一個(gè)任務(wù)
     if (active == null) {
       scheduleNext();
     }
   }
 
  
   protected synchronized void scheduleNext() {
     if ((active = tasks.poll()) != null) {
       executor.execute(active);
     }
   }
 }

ExecutorService接口拓展Executor功能,這是一個(gè)更廣泛的接口。

ThreadPoolExecutor類提供可擴(kuò)展的線程池實(shí)現(xiàn)。

Executors類提供了方便的工廠方法。

內(nèi)存一致性效應(yīng):在將可運(yùn)行對(duì)象提交給執(zhí)行程序之前發(fā)生的線程操作——在它開始執(zhí)行之前,可能在另一個(gè)線程中。

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

相關(guān)文章

  • Java設(shè)計(jì)模式之中介模式

    Java設(shè)計(jì)模式之中介模式

    這篇文章主要介紹了Java設(shè)計(jì)模式之中介模式,中介模式(Mediator?Pattern),屬于行為型設(shè)計(jì)模式,目的是把系統(tǒng)中對(duì)象之間的調(diào)用關(guān)系從一對(duì)多轉(zhuǎn)變成一對(duì)一的調(diào)用關(guān)系,以此來降低多個(gè)對(duì)象和類之間的通信復(fù)雜性,需要的朋友可以參考下
    2023-12-12
  • Spring依賴注入和控制反轉(zhuǎn)詳情

    Spring依賴注入和控制反轉(zhuǎn)詳情

    這篇文章主要介紹了Spring依賴注入和控制反轉(zhuǎn)詳情,控制反轉(zhuǎn)是面向?qū)ο缶幊讨惺褂玫男g(shù)語,通過該術(shù)語,對(duì)象或?qū)ο蠹目刂茩?quán)被賦予框架或由框架提供的容器。下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • IDEA安裝插件的兩種方式詳解

    IDEA安裝插件的兩種方式詳解

    插件是開發(fā)工具的擴(kuò)展程序,通常由第三方提供,當(dāng)安裝了插件后,原開發(fā)工作的菜單、按鈕等開發(fā)環(huán)境可能會(huì)發(fā)生變化,本文通過圖文給大家詳細(xì)介紹了IDEA安裝插件的兩種方式,需要的朋友可以參考下
    2025-09-09
  • java的json解析類庫使用示例

    java的json解析類庫使用示例

    這篇文章主要介紹了java的json解析類庫使用方法,這里使用Zson解析json,這是一個(gè)開源的json處理類庫
    2014-03-03
  • java代理模式與動(dòng)態(tài)代理模式詳解

    java代理模式與動(dòng)態(tài)代理模式詳解

    代理就是一個(gè)人或者一個(gè)機(jī)構(gòu)代表另一個(gè)人或者另一個(gè)機(jī)構(gòu)采取行動(dòng)。在一些情況下,一個(gè)客戶不想或者不能夠直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之前起到中介的作用
    2014-02-02
  • http basic authentication通過post方式訪問api示例分享 basic認(rèn)證示例

    http basic authentication通過post方式訪問api示例分享 basic認(rèn)證示例

    在HTTP中,基本認(rèn)證是一種用來允許Web瀏覽器或其他客戶端程序在請(qǐng)求時(shí)提供以用戶名和口令形式的憑證,這篇文章主要介紹了http basic authentication通過post方式訪問api示例,大家參考使用吧
    2014-01-01
  • 淺析java實(shí)現(xiàn)數(shù)據(jù)加密問題

    淺析java實(shí)現(xiàn)數(shù)據(jù)加密問題

    本文通過實(shí)例代碼給大家介紹了java實(shí)現(xiàn)數(shù)據(jù)加密問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-11-11
  • 淺談mybatis-plus批量保存異常及效率優(yōu)化

    淺談mybatis-plus批量保存異常及效率優(yōu)化

    本文主要介紹了mybatis-plus批量保存異常及效率優(yōu)化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • 淺談SpringMVC中Interceptor和Filter區(qū)別

    淺談SpringMVC中Interceptor和Filter區(qū)別

    這篇文章主要介紹了淺談SpringMVC中Interceptor和Filter區(qū)別,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • 淺談一下SpringCloud中Hystrix服務(wù)熔斷和降級(jí)原理

    淺談一下SpringCloud中Hystrix服務(wù)熔斷和降級(jí)原理

    這篇文章主要介紹了淺談一下SpringCloud中Hystrix服務(wù)熔斷和降級(jí)原理,Hystrix 是 Netflix 的一款開源的容錯(cuò)框架,通過服務(wù)隔離來避免由于依賴延遲、異常,引起資源耗盡導(dǎo)致系統(tǒng)不可用的解決方案,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

英吉沙县| 静安区| 五指山市| 东乡| 施秉县| 晋中市| 巴林左旗| 平原县| 靖远县| 靖安县| 恩施市| 托克逊县| 天长市| 本溪市| 包头市| 潼关县| 富裕县| 黔南| 巨野县| 许昌市| 高邑县| 华阴市| 漳平市| 平陆县| 当阳市| 金川县| 襄垣县| 新蔡县| 赫章县| 昭苏县| 临沭县| 张家港市| 辰溪县| 石屏县| 安平县| 榕江县| 万山特区| 屏东市| 潞城市| 始兴县| 新化县|