国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

JAVA 創建線程池的注意事項

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

1、創建線程或線程池時請指定有意義的線程名稱,方便出錯時回溯。創建線程池的時候請使用帶ThreadFactory的構造函數,并且提供自定義ThreadFactory實現或者使用第三方實現。

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去創建,而是通過ThreadPoolExecutor的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。

說明:Executors返回的線程池對象的弊端如下:

1)FixedThreadPool和SingleThreadPool:  允許的請求隊列長度為Integer.MAX_VALUE,可能會堆積大量的請求,從而導致OOM。

2)CachedThreadPool:  允許的創建線程數量為Integer.MAX_VALUE,可能會創建大量的線程,從而導致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、線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。

說明:

使用線程池的好處是減少在創建和銷毀線程上所花的時間以及系統資源的開銷,解決資源不足的問題。

如果不使用線程池,有可能造成系統創建大量同類線程而導致消耗完內存或者“過度切換”的問題。

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 創建線程池的注意事項的詳細內容,更多關于JAVA 創建線程池注意事項的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 国产三级中文字幕 | 亚洲人在线播放 | 亚洲欧美一区二区三区在线播放 | 欧美一区不卡二区不卡三区 | 伊人久爱 | 国产在线观看高清不卡 | aaa在线观看 | 亚洲网站免费观看 | 亚洲线精品一区二区三区 | 兔子先生节目在线观看免费 | 美女个护士一级毛片亚洲 | 久草在线新视频 | 亚洲国产一级毛片 | 欧美日韩一区二区三区在线观看 | 欧美日产国产亚洲综合图区一 | 精品综合久久久久久99 | 国产在线精品香蕉综合网一区 | 能直接看的一级欧美毛片 | 日本黄页网站在线观看 | 国产亚洲午夜精品a一区二区 | 福利社色| 亚洲男女免费视频 | 在线观看亚洲精品国产 | 亚洲欧洲日本天天堂在线观看 | 日韩在线免费视频 | 免费男女视频 | 欧美最刺激好看的一级毛片 | 国产精选经典三级小泽玛利亚 | 亚洲综合色一区二区三区另类 | 精品精品国产自在久久高清 | 香港a毛片免费全部播放 | 美女被免费视频网站a国产 美女被免费网站视频软件 美女被免费网站在线软件 美女被免费网站在线视频软件 | 国产1000部成人免费视频 | 成人国产精品999视频 | 亚洲精品久久久久影院 | 国产大陆亚洲精品国产 | www.亚洲天堂| 一区二区三区欧美视频 | 成人a毛片免费视频观看 | 国产亚洲人成网站在线观看 | 日本精品高清一区二区不卡 |