一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java線程池使用后到底要關閉嗎

java線程池使用后到底要關閉嗎

2021-07-01 14:10煩囂的人 Java教程

這篇文章主要給大家介紹了關于java線程池使用后到底要不要關閉的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

線程池做什么

網絡請求通常有兩種形式:

第一種,請求不是很頻繁,而且每次連接后會保持相當一段時間來讀數據或者寫數據,最后斷開,如文件下載,網絡流媒體等。

另一種形式是請求頻繁,但是連接上以后讀/寫很少量的數據就斷開連接。考慮到服務的并發問題,如果每個請求來到以后服務都為它啟動一個線程,那么這對服務的資源可能會造成很大的浪費,特別是第二種情況。

因為通常情況下,創建線程是需要一定的耗時的,設這個時間為t1,而連接后讀/寫服務的時間為t2,當t1>>t2時,我們就應當考慮一種策略或者機制來控制,使得服務對于第二種請求方式也能在較低的功耗下完成。

通常,我們可以用線程池來解決這個問題,首先,在服務啟動的時候,我們可以啟動好幾個線程,并用一個容器(如線程池)來管理這些線程。

當請求到來時,可以從池中取一個線程出來,執行任務(通常是對請求的響應),當任務結束后,再將這個線程放入池中備用;

如果請求到來而池中沒有空閑的線程,該請求需要排隊等候。最后,當服務關閉時銷毀該池即可。

然而最近在開發中用到了java的線程池,然后就很疑惑這個線程池到底要不要手動關閉,感覺是要關閉的,但是沒人強調線程池用完要關閉。so今天來試驗下到底線程池用完要不要關閉。

直接上實驗代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(string[] args) throws exception {
  //用于獲取到本java進程,進而獲取總線程數
 runtimemxbean runtimebean = managementfactory.getruntimemxbean();
 string jvmname = runtimebean.getname();
 system.out.println("jvm name = " + jvmname);
 long pid = long.valueof(jvmname.split("@")[0]);
 system.out.println("jvm pid = " + pid);
 threadmxbean bean = managementfactory.getthreadmxbean();
 int n = 30000;
 for (int i = 0; i < n; i++) {
  threadpoolexecutor executor = new threadpoolexecutor(10,20,1000,timeunit.seconds,new linkedblockingdeque<>());
  for(int j=0;j<10;j++){
   executor.execute(()->{
    system.out.println("當前線程總數為:"+bean.getthreadcount());
   });
  }
 }
 thread.sleep(10000);
 system.out.println("線程總數為 = " + bean.getthreadcount());
}

簡單來說就是在一個 for 循環中創建線程池,然后執行一個打印任務(不執行任務線程不會真正創建),打印出當前 java 進程的總線程數,下面是打印部分結果:

java線程池使用后到底要關閉嗎

線程

可以看到在創建到 15 萬個線程是爆內存,內存占用百分百后 java 應用崩潰。說明線程未被回收。

ps:內存占用百分百后,部分應用開始出現異常,界面花屏,閃屏,不能正常繪制gui,不知道為啥,即使后面內存占用降下來也一樣,只能重啟應用。

結論

使用完線程池一定記得回收,否則跑著跑著就內存爆炸崩潰?;厥蘸瘮等缦拢?/p>

?
1
2
3
4
//執行此函數后線程池不再接收新任務,并等待所有任務執行完畢后銷毀線程。此函數不會等待銷毀完畢
executor.shutdown();
//立即結束所有線程,不管是否正在運行,返回未執行完畢的任務列表
executor.shutdownnow();

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/wuyoucao/p/10247012.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品日韩在线观看 | 91精品久久国产青草 | 亚洲AV无码国产精品色在线看 | 日本久本草精品 | avtt在线观看| 午夜大片在线观看 | 亚洲国产精品久久久久久网站 | 亚洲zooz人禽交xxxx | 女人被男人躁得好爽免费视频 | 亚洲一卡2卡4卡5卡6卡残暴在线 | 操女b | 天天干天天爽天天操 | 午夜dj免费视频观看社区 | 色色色色网站 | spank日本网站脱裤子打屁股 | 男人机机桶女人 | 精品国产成a人在线观看 | 菠萝视频污| 性色欲情网站IWWW | 毛片群| 5g影院天天影院天天爽影院网站 | 亚洲免费视频在线 | 成人影院免费看 | 国产欧美一区二区精品性色 | 贰佰麻豆剧果冻传媒一二三区 | 国产探花视频在线观看 | 日韩无砖专区2020在线 | 我们日本在线观看免费动漫下载 | 皇上撞着太子妃的秘密小说 | 亚洲人成网站在线观看90影院 | 日韩毛片在线 | 福利片福利一区二区三区 | 4p高h三男一女 | 91大神第九部红酒气质女 | 美女天天色 | 男人视频网站 | 国产51社区精品视频资源 | 九九九久久久 | 亚洲第一区二区快射影院 | 国产欧美日韩在线观看精品 | 欧美日韩导航 |