大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java多線程編程概述
Java多線程的安全問題
Java多線程同步
Java多線程間的通信
Java線程Lock
Java多線程管理
保障線程安全的設計技術
Java鎖的優化及注意事項
Java多線程集合
【Java多線程】單例模式與多線程

Java提高鎖性能的方法

減少鎖持有時間

對于使用鎖進行并發控制的應用程序來說,如果單個線程特有鎖的時間過長,會導致鎖的競爭更加激烈,會影響系統的性能.在程序中需要盡可能減少線程對鎖的持有時間,如下面代碼:

public synchronized void  syncMethod(){
   othercode1();
   mutexMethod();
   othercode();
}

在syncMethod同步方法中,假設只有mutexMethod()方法是需要同步的, othercode1()方法與othercode2()方法不需要進行同步. 如果othercode1與othercode2這兩個方法需要花費較長的CPU時間,在并發量較大的情況下,這種同步方案會導致等待線程的大量增加. 一個較好的優化方案是,只在必要時進行同步,可以減少鎖的持有時間,提高系統的吞吐量,如把上面的代碼改為:

public  void  syncMethod(){
   othercode1();
   synchronized (this) {
      mutexMethod();
   }
   othercode();
}

只對mutexMethod()方法進行同步,這種減少鎖持有時間有助于降低鎖沖突的可能性,提升系統的并發能力。

減小鎖的粒度

一個鎖保護的共享數據的數量大小稱為鎖的粒度. 如果一個鎖保護的共享數據的數量大就稱該鎖的粒度粗,否則稱該鎖的粒度細.鎖的粒度過粗會導致線程在申請鎖時需要進行不必要的等待.減少鎖粒度是一種削弱多線程鎖競爭的一種手段,可以提高系統的并發性。

在JDK7前,java.util.concurrent.ConcurrentHashMap類采用分段鎖協議,可以提高程序的并發性。

使用讀寫分離鎖代替獨占鎖

使用ReadWriteLock讀寫分離鎖可以提高系統性能, 使用讀寫分離鎖也是減小鎖粒度的一種特殊情況. 第二條建議是能分割數據結構實現減小鎖的粒度,那么讀寫鎖是對系統功能點的分割。

在多數情況下都允許多個線程同時讀,在寫的使用采用獨占鎖,在讀多寫少的情況下,使用讀寫鎖可以大大提高系統的并發能力。

鎖分離

將讀寫鎖的思想進一步延伸就是鎖分離.讀寫鎖是根據讀寫操作功能上的不同進行了鎖分離.根據應用程序功能的特點,也可以對獨占鎖進行分離.如java.util.concurrent.LinkedBlockingQueue類中take()與put()方法分別從隊頭取數據,把數據添加到隊尾. 雖然這兩個方法都是對隊列進行修改操作,由于操作的主體是鏈表,take()操作的是鏈表的頭部,put()操作的是鏈表的尾部,兩者并不沖突. 如果采用獨占鎖的話,這兩個操作不能同時并發,在該類中就采用鎖分離,take()取數據時有取鎖, put()添加數據時有自己的添加鎖,這樣take()與put()相互獨立實現了并發。

粗鎖化

為了保證多線程間的有效并發,會要求每個線程持有鎖的時間盡量短.但是凡事都有一個度,如果對同一個鎖不斷的進行請求,同步和釋放,也會消耗系統資源.如:

public void  method1(){
   synchronized( lock ){
      同步代碼塊1
   }
   synchronized( lock ){
      同步代碼塊2
   }
}

JVM在遇到一連串不斷對同一個鎖進行請求和釋放操作時,會把所有的鎖整合成對鎖的一次請求,從而減少對鎖的請求次數,這個操作叫鎖的粗化,如上一段代碼會整合為:

public void  method1(){
  synchronized( lock ){
     同步代碼塊1
     同步代碼塊2
  }
}

在開發過程中,也應該有意識的在合理的場合進行鎖的粗化,尤其在循環體內請求鎖時,如:

for(int i = 0 ; i< 100; i++){
   synchronized(lock){}
}

這種情況下,意味著每次循環都需要申請鎖和釋放鎖,所以一種更合理的做法就是在循環外請求一次鎖,如:

synchronized( lock ){
   for(int i = 0 ; i< 100; i++){}
}
全部教程
主站蜘蛛池模板: 国产91在线chines看 | 久久精品国产主播一区二区 | 久久天天躁狠狠躁狠狠躁 | 亚洲视频精品 | 成人精品一区二区不卡视频 | 综合欧美日韩一区二区三区 | 深夜免费看片 | 免费一级a毛片在线播出 | 久久成人免费观看全部免费 | 国产成年人视频 | 视频在线观看入口一二三2021 | 欧美日韩国产片 | 鲁丝一区 | 四虎院影永久在线观看 | 欧美毛片一级的免费的 | 97午夜理伦片在线影院 | 四虎黄色影视 | 久久亚洲精品久久久久 | 99精品国产一区二区三区 | 日本天天谢天天要天天爱 | 任我鲁精品视频精品 | 超级碰碰青草免费视频92 | 在线观看国产欧美 | 天天干夜夜骑 | se01国产短视频在线观看 | 亚洲天堂一区二区三区四区 | 午夜一级精品免费毛片 | 婷婷综合另类小说色区 | 色网站综合 | 红色一级毛片 | 免费一级大片儿 | 成人人观看的免费毛片 | 热99久久| 99久视频 | 国产欧美一区二区三区观看 | 国产亚洲一区二区精品 | 正在播放国产精品 | 日本免费不卡视频一区二区三区 | 成年人网站在线 | 成人国产第一区在线观看 | 人人狠狠综合久久亚洲婷婷 |