日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Java實現(xiàn)多線程的上下文切換

瀏覽:12日期:2022-08-23 14:17:50

對于上下文切換不同的操作系統(tǒng)模式也不盡相同,這里我們只討論Unix系統(tǒng),在我之前的文章中提到過windows的搶占式,這里就不在贅述。

無論是單核還是多核CPU都是支持多線程代碼的,CPU通過給每個線程分配CPU時間片來實這個機制。

時間片是CPU分配給各個線程的時間,因為時間片非常短,所以CPU通過不停地切換線程執(zhí)行,讓我們感覺多個線程是同時執(zhí)行的,時間片一般是幾十毫秒(ms)

CPU通過時間片分配算法來循環(huán)執(zhí)行任務,當前任務執(zhí)行一個時間片后會切換到下一個任務。但是,在切換前會保存上一個任務的狀態(tài),以便下次切換回這個任務時,可以再加載這個任務的狀態(tài)。

所以任務從保存到再加載的過程就是一次上下文切換。 很明顯上下文切換會影響多線程的執(zhí)行速度。

如何減少上下文切換

減少上下文切換的方法有

1、無鎖并發(fā)編程。

多線程競爭鎖時,會引起上下文切換,所以多線程處理數(shù)據(jù)時,可以用一

些辦法來避免使用鎖,如將數(shù)據(jù)的ID按照Hash算法取模分段,不同的線程處理不同段的數(shù)據(jù)。

2、CAS算法。

Java的Atomic包使用CAS(compare and swap)算法來更新數(shù)據(jù),而不需要加鎖。

3、使用最少線程。避免創(chuàng)建不需要的線程,比如任務很少,但是創(chuàng)建了很多線程來處理,這

樣會造成大量線程都處于等待狀態(tài)。

4、協(xié)程:在單線程里實現(xiàn)多任務的調度,并在單線程里維持多個任務間的切換。

減少上下文切換的例子

下面我們看一個通過減少線上大量WAITING的線程,來減少上下文切換次數(shù)的例子:

使用jstack命令dump線程信息,看看pid為3117的進程里的線程都在做什么

sudo -u admin /opt/java/bin/jstack 31177 > /home/java/dump17

統(tǒng)計所有線程分別處于什么狀態(tài),發(fā)現(xiàn)300多個線程處于WAITING(onobjectmonitor)狀態(tài)

grep java.lang.Thread.State dump17 | awk ’{print $2$3$4$5}’| sort | uniq -c39 RUNNABLE21 TIMED_WAITING(onobjectmonitor)6 TIMED_WAITING(parking)51 TIMED_WAITING(sleeping)305 WAITING(onobjectmonitor)3 WAITING(parking)

打開dump文件查看處于WAITING(onobjectmonitor)的線程在做什么。發(fā)現(xiàn)這些線程基本全是JBOSS的工作線程,在await。說明JBOSS線程池里線程接收到的任務太少,大量線程都閑著。

'http-0.0.0.0-7001-97' daemon prio=10 tid=0x000000004f6a8000 nid=0x555e inObject.wait() [0x0000000052423000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000007969b2280> (a org.apache.tomcat.util.net.AprEndpoint$Worker)at java.lang.Object.wait(Object.java:485)at org.apache.tomcat.util.net.AprEndpoint$Worker.await(AprEndpoint.java:1464)- locked <0x00000007969b2280> (a org.apache.tomcat.util.net.AprEndpoint$Worker)at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1489)at java.lang.Thread.run(Thread.java:662)

減少JBOSS的工作線程數(shù),找到JBOSS的線程池配置信息,將maxThreads降到100

<maxThreads='250' maxHttpHeaderSize='8192'emptySessionPath='false' minSpareThreads='40' maxSpareThreads='75'maxPostSize='512000' protocol='HTTP/1.1'enableLookups='false' redirectPort='8443' acceptCount='200' bufferSize='16384'connectionTimeout='15000' disableUploadTimeout='false' useBodyEncodingForURI= 'true'>

重啟JBOSS,再dump線程信息,然后統(tǒng)計WAITING(onobjectmonitor)的線程,發(fā)現(xiàn)減少了175個。

WAITING的線程少了,系統(tǒng)上下文切換的次數(shù)就會少,因為每一次從WAITTING到RUNNABLE都會進行一次上下文的切換。

讀者也可以使用vmstat命令測試一下。

grep java.lang.Thread.State dump17 | awk ’{print $2$3$4$5}’| sort | uniq -c44 RUNNABLE22 TIMED_WAITING(onobjectmonitor)9 TIMED_WAITING(parking)36 TIMED_WAITING(sleeping)130 WAITING(onobjectmonitor)1 WAITING(parking)

為什么要減少上下文切換

當CPU從執(zhí)行一個線程切換到執(zhí)行另外一個線程的時候,它需要先存儲當前線程的本地的數(shù)據(jù),程序指針等,然后載入另一個線程的本地數(shù)據(jù),程序指針等,最后才開始執(zhí)行。

這種切換稱為“上下文切換”(“context switch”)。

CPU會在一個上下文中執(zhí)行一個線程,然后切換到另外一個上下文中執(zhí)行另外一個線程。上下文切換并不廉價,是比較耗時的

以上這篇Java實現(xiàn)多線程的上下文切換就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产美女高潮在线观看| 日韩理论视频| 在线日韩一区| 国产激情久久| 99成人在线视频| 久久爱www成人| 久久蜜桃精品| 韩国三级一区| 亚洲一级少妇| 久久男女视频| 日韩在线短视频| 精品久久影院| 不卡专区在线| 精品理论电影在线| 精品黄色一级片| 亚洲高清不卡| 伊人久久成人| 五月天久久网站| 国产精品试看| 久久美女性网| 亚洲成人av观看| 蜜桃精品在线| 日韩精品一卡| 99久久久国产精品美女| 精品国产一区二区三区av片| 国产精品久久久久77777丨| 国产精品免费大片| 欧美日韩91| 国产亚洲人成a在线v网站| 国产一区日韩欧美| 日韩精品久久理论片| 国产精品一区二区三区美女 | 亚洲另类黄色| aa亚洲婷婷| 欧美日韩xxxx| 久久青草久久| 日韩精品中文字幕一区二区| 国产欧美日韩精品一区二区免费| 午夜在线精品偷拍| 国产精品亚洲综合久久| 久久国产电影| 免费视频一区二区三区在线观看| 国产精品免费99久久久| 99久久精品国产亚洲精品| 久久成人亚洲| 国产伦久视频在线观看| 欧美激情视频一区二区三区在线播放| 国产毛片久久久| 美女视频网站久久| 四虎精品一区二区免费| 精品亚洲免a| 亚洲综合色婷婷在线观看| 欧美影院三区| 国产精品自在| 免费高潮视频95在线观看网站| 免费视频国产一区| 精品一区二区三区免费看| 国产欧美精品| 久久不射中文字幕| 久久蜜桃av| 黄在线观看免费网站ktv| 69堂免费精品视频在线播放| 久热综合在线亚洲精品| 免费高潮视频95在线观看网站| 亚洲九九精品| 男人操女人的视频在线观看欧美| 女生影院久久| 免费福利视频一区二区三区| 精品欠久久久中文字幕加勒比| 亚洲香蕉久久| 国产99精品| 日韩免费在线| 国产精品高清一区二区| 亚洲激情黄色| 黄色日韩精品| 久久国内精品| 欧美日韩免费观看视频| 美女尤物久久精品| 欧美成人一二区| 狠狠操综合网| 91大神在线观看线路一区| 另类综合日韩欧美亚洲| 久久国产毛片| 日韩福利视频网| 日本一二区不卡| 在线观看一区| 欧美香蕉视频| 精品久久久中文字幕| 欧美成人精品三级网站| 亚洲美女久久| 国产精品视频首页| 国产成人精选| 岛国av在线播放| 五月综合激情| 日韩一区二区三区在线看| 日本aⅴ精品一区二区三区| 日韩av在线播放中文字幕| 久久精品亚洲人成影院| 日韩精品影视| 欧美一级一区| 精品91久久久久| 香蕉久久久久久| 国产精品地址| 最新日韩av| 精品视频黄色| 日韩av中文字幕一区二区| 国产伦精品一区二区三区在线播放| 国内精品美女在线观看| 日韩中文字幕1| 日韩中文首页| 国产精品一区二区三区www | 久久中文字幕二区| 国产精品色婷婷在线观看| 亚洲少妇一区| 久久免费国产| 高清精品久久| 亚洲精选av| 婷婷亚洲五月色综合| 精品久久国产一区| 欧美国产视频| 国产精品亲子伦av一区二区三区| 国产一区视频在线观看免费| 日韩成人三级| 日韩高清一区二区| 美女一区网站| 日韩国产欧美在线播放| 久久精品国产亚洲aⅴ | 日韩一区二区三免费高清在线观看| av日韩中文| 欧美91在线|欧美| 日本99精品| 日韩av网站在线观看| 久久精品伊人| 国产一区二区三区精品在线观看| 福利精品一区| 99xxxx成人网| 国产美女精品视频免费播放软件| 国产日韩一区| av最新在线| 免费在线成人网| 国产欧美一区二区三区精品观看| 日韩深夜视频| 视频精品一区| 日本视频中文字幕一区二区三区| 亚洲人成精品久久久| 日韩一二三区在线观看| 欧美色综合网| 国内自拍视频一区二区三区| 国产不卡人人| 午夜久久影院| 婷婷成人av| 国产精品1区| 欧美日韩免费看片| 久久国产精品99国产| 日韩国产在线不卡视频| 韩国一区二区三区视频| 国产一区 二区| 欧美日韩精品一本二本三本| 中文字幕成人| 欧美精品黄色| 国产精品视频一区二区三区 | 亚洲欧美日韩精品一区二区| 三级欧美在线一区| 国产一卡不卡| 日韩精品首页| 日韩av中文字幕一区| 久久久久蜜桃| 亚洲精品看片| 樱桃成人精品视频在线播放| 免费久久精品视频| 日本一区二区高清不卡| 欧美日韩亚洲国产精品| 深夜日韩欧美| 亚洲精品黄色| 亚洲男女自偷自拍| 日韩不卡免费高清视频| 国产欧洲在线| 黑丝一区二区三区| 91成人超碰| 日韩高清欧美激情| sm久久捆绑调教精品一区| 在线精品福利| 麻豆一区二区三| 亚洲精品91| 色88888久久久久久影院| 亚洲尤物av| 91精品xxx在线观看| 日韩国产欧美在线视频| 日韩欧美二区| 欧美一区自拍| 亚洲国产一区二区在线观看 | 欧美激情福利| 一区二区三区四区在线看| 国产66精品| 麻豆91精品| 在线 亚洲欧美在线综合一区| 国产欧美在线| 国产欧美丝祙| 亚洲一二三区视频| 亚洲精品美女|