成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java并發(fā)編程學(xué)習(xí)之線程池-預(yù)定義線程池(四)

suemi / 1033人閱讀

摘要:系統(tǒng)預(yù)定了幾個(gè)線程池,不過(guò)建議手動(dòng)創(chuàng)建,以防止錯(cuò)誤創(chuàng)建消耗資源,比如創(chuàng)建太多線程或者固定線程數(shù)量,無(wú)界隊(duì)列固定線程數(shù)量,數(shù)量為,無(wú)界隊(duì)列,會(huì)按順序執(zhí)行不限制線程數(shù)量,使用隊(duì)列,使用于短任務(wù)基于用于周期性執(zhí)行任務(wù)示例第一個(gè)是,第二個(gè)是第一

系統(tǒng)預(yù)定了幾個(gè)線程池,不過(guò)建議手動(dòng)創(chuàng)建,以防止錯(cuò)誤創(chuàng)建消耗資源,比如創(chuàng)建太多線程或者OOM

FixedThreadPool

固定線程數(shù)量,無(wú)界隊(duì)列

public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
                                  0L, TimeUnit.MILLISECONDS,
                                  new LinkedBlockingQueue());
}
SingleThreadExecutor

固定線程數(shù)量,數(shù)量為1,無(wú)界隊(duì)列,會(huì)按順序執(zhí)行

public static ExecutorService newSingleThreadExecutor() {
    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new LinkedBlockingQueue()));
}
CachedThreadPool

不限制線程數(shù)量,使用SynchronousQueue隊(duì)列,使用于短任務(wù)

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue());
}
WorkStealingPool

基于ForkJoinPool

public static ExecutorService newWorkStealingPool(int parallelism) {
    return new ForkJoinPool
        (parallelism,
         ForkJoinPool.defaultForkJoinWorkerThreadFactory,
         null, true);
}
ScheduledThreadPoolExecutor

用于周期性執(zhí)行任務(wù)

public static ScheduledExecutorService newSingleThreadScheduledExecutor() {
    return new DelegatedScheduledExecutorService
        (new ScheduledThreadPoolExecutor(1));
}
示例
public class ScheduledDemo {
    static class Thread1 implements Runnable {
        @Override
        public void run() {
            SimpleDateFormat formater = new SimpleDateFormat(
                    "yyyy-MM-dd HH:mm:ss");
            System.out.println(Thread.currentThread().getName() + ":" + formater.format(new Date()));
        }
    }

    public static void main(String[] args) {
        ScheduledThreadPoolExecutor schedule
                = new ScheduledThreadPoolExecutor(1);
        //第一個(gè)是Runnable,第二個(gè)是第一次開(kāi)始的時(shí)間,第三個(gè)是周期時(shí)間,第四個(gè)是時(shí)間單位
        schedule.scheduleAtFixedRate(new Thread1(),1000,1000, TimeUnit.MILLISECONDS);
    }
}

運(yùn)行結(jié)果如下:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75723.html

相關(guān)文章

  • java并發(fā)編程學(xué)習(xí)之線程-ThreadPoolExecutor(三)

    摘要:是所有線程池實(shí)現(xiàn)的父類,我們先看看構(gòu)造函數(shù)構(gòu)造參數(shù)線程核心數(shù)最大線程數(shù)線程空閑后,存活的時(shí)間,只有線程數(shù)大于的時(shí)候生效存活時(shí)間的單位任務(wù)的阻塞隊(duì)列創(chuàng)建線程的工程,給線程起名字當(dāng)線程池滿了,選擇新加入的任務(wù)應(yīng)該使用什么策略,比如拋異常丟棄當(dāng)前 ThreadPoolExecutor ThreadPoolExecutor是所有線程池實(shí)現(xiàn)的父類,我們先看看構(gòu)造函數(shù) 構(gòu)造參數(shù) corePool...

    阿羅 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之線程-Executor和ExecutorService(一)

    摘要:接口用于提交任務(wù)接口繼承了接口設(shè)置線程的狀態(tài),還沒(méi)執(zhí)行的線程會(huì)被中斷設(shè)置線程的狀態(tài),嘗試停止正在進(jìn)行的線程當(dāng)調(diào)用或方法后返回為當(dāng)調(diào)用方法后,并且所有提交的任務(wù)完成后返回為當(dāng)調(diào)用方法后,成功停止后返回為當(dāng)前線程阻塞,直到線程執(zhí)行完時(shí)間到被中斷 Executor接口 void execute(Runnable command)//用于提交command任務(wù) ExecutorService接...

    liuchengxu 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之線程-AbstractExecutorService(二)

    摘要:抽象類,實(shí)現(xiàn)了的接口。將任務(wù)封裝成提交任務(wù)主要方法在任務(wù)是否超時(shí)超時(shí)時(shí)間任務(wù)書(shū)用于存放結(jié)果的,先完成的放前面。 AbstractExecutorService抽象類,實(shí)現(xiàn)了ExecutorService的接口。 newTaskFor 將任務(wù)封裝成FutureTask protected RunnableFuture newTaskFor(Runnable runnable, T va...

    Jokcy 評(píng)論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之線程的生命周期-join(

    摘要:定義等待該線程終止,比如線程調(diào)用了線程的,那么線程要等到線程執(zhí)行完后,才可以繼續(xù)執(zhí)行。 定義 等待該線程終止,比如A線程調(diào)用了B線程的join,那么A線程要等到B線程執(zhí)行完后,才可以繼續(xù)執(zhí)行。 示例 public class JoinDemo { static class JoinThread1 implements Runnable { Thread thre...

    xavier 評(píng)論0 收藏0
  • 一起學(xué)并發(fā)編程 - 簡(jiǎn)易線程實(shí)現(xiàn)

    摘要:并且,線程池在某些情況下還能動(dòng)態(tài)調(diào)整工作線程的數(shù)量,以平衡資源消耗和工作效率。同時(shí)線程池還提供了對(duì)池中工作線程進(jìn)行統(tǒng)一的管理的相關(guān)方法。 開(kāi)發(fā)中經(jīng)常會(huì)遇到各種池(如:連接池,線程池),它們的作用就是為了提高性能及減少開(kāi)銷,在JDK1.5以后的java.util.concurrent包中內(nèi)置了很多不同使用場(chǎng)景的線程池,為了更好的理解它們,自己手寫(xiě)一個(gè)線程池,加深印象。 概述 1.什么是...

    Harriet666 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<