色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JAVA 創(chuàng)建線程池的注意事項(xiàng)

瀏覽:4日期:2022-08-29 08:11:35

1、創(chuàng)建線程或線程池時(shí)請(qǐng)指定有意義的線程名稱,方便出錯(cuò)時(shí)回溯。創(chuàng)建線程池的時(shí)候請(qǐng)使用帶ThreadFactory的構(gòu)造函數(shù),并且提供自定義ThreadFactory實(shí)現(xiàn)或者使用第三方實(shí)現(xiàn)。

ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat('demo-pool-%d').build();ExecutorService singleThreadPool = new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());singleThreadPool.execute(()-> System.out.println(Thread.currentThread().getName()));singleThreadPool.shutdown();public class TimerTaskThread extends Thread {public TimerTaskThread(){super.setName('TimerTaskThread'); …}

2、線程池不允許使用Executors去創(chuàng)建,而是通過(guò)ThreadPoolExecutor的方式,這樣的處理方式讓寫(xiě)的同學(xué)更加明確線程池的運(yùn)行規(guī)則,規(guī)避資源耗盡的風(fēng)險(xiǎn)。

說(shuō)明:Executors返回的線程池對(duì)象的弊端如下:

1)FixedThreadPool和SingleThreadPool:  允許的請(qǐng)求隊(duì)列長(zhǎng)度為Integer.MAX_VALUE,可能會(huì)堆積大量的請(qǐng)求,從而導(dǎo)致OOM。

2)CachedThreadPool:  允許的創(chuàng)建線程數(shù)量為Integer.MAX_VALUE,可能會(huì)創(chuàng)建大量的線程,從而導(dǎo)致OOM。

Positive example 1:

//org.apache.commons.lang3.concurrent.BasicThreadFactoryScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,new BasicThreadFactory.Builder().namingPattern('example-schedule-pool-%d').daemon(true).build());

Positive example 2:

ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat('demo-pool-%d').build();//Common Thread PoolExecutorService pool = new ThreadPoolExecutor(5, 200,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());pool.execute(()-> System.out.println(Thread.currentThread().getName()));pool.shutdown();//gracefully shutdown

Positive example 3:

<bean id='userThreadPool'class='org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor'><property name='corePoolSize' value='10' /><property name='maxPoolSize' value='100' /><property name='queueCapacity' value='2000' /><property name='threadFactory' value= threadFactory /><property name='rejectedExecutionHandler'><ref local='rejectedExecutionHandler' /></property></bean>//in codeuserThreadPool.execute(thread);

3、線程資源必須通過(guò)線程池提供,不允許在應(yīng)用中自行顯式創(chuàng)建線程。

說(shuō)明:

使用線程池的好處是減少在創(chuàng)建和銷毀線程上所花的時(shí)間以及系統(tǒng)資源的開(kāi)銷,解決資源不足的問(wèn)題。

如果不使用線程池,有可能造成系統(tǒng)創(chuàng)建大量同類線程而導(dǎo)致消耗完內(nèi)存或者“過(guò)度切換”的問(wèn)題。

ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat('demo-pool-%d').build();ExecutorService singleThreadPool = new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());singleThreadPool.execute(()-> System.out.println(Thread.currentThread().getName()));singleThreadPool.shutdown();

以上就是JAVA 創(chuàng)建線程池的注意事項(xiàng)的詳細(xì)內(nèi)容,更多關(guān)于JAVA 創(chuàng)建線程池注意事項(xiàng)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久青草视频在线 | 99视频精品全部 在线 | 香蕉久久国产 | 久久免费手机视频 | 成人国产一区 | 色樱桃影院亚洲精品影院 | 91香蕉国产线观看免 | 亚洲一区免费在线观看 | 91久久视频 | 韩国精品一区二区三区四区五区 | 日本理论片免费高清影视在线观看 | 理论片我不卡在线观看 | 国产成人禁片免费观看视频 | 国产成人精品午夜视频' | 日韩欧美一区二区在线观看 | 国产在线视频区 | 亚洲国产一区二区三区四区 | 久久精品成人免费看 | 日韩精品一区二区三区中文字幕 | 国产一线视频在线观看高清 | 一级视频在线免费观看 | 国产免费久久精品99re丫y | 亚洲综合亚洲综合网成人 | 中文字幕一区二区三区 精品 | 久久99亚洲精品久久频 | 亚洲国产高清视频 | 午夜爱爱毛片xxxx视频免费看 | 欧美一级特黄aaaaaa在线看首页 | 女教师的一级毛片 | 久久久一区二区三区不卡 | 精品成人一区二区三区免费视频 | 久久99毛片免费观看不卡 | 欧美日韩精品一区二区三区高清视频 | 欧美高清性色生活片免费观看 | 国产一区二区在线播放 | 成人国产在线观看 | 欧美大尺度aaa级毛片 | 正在播放的国产a一片 | 一级毛片在线免费观看 | 另类视频区第一页 | 99久久精品费精品国产一区二 |