国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務(wù)器之家 - 編程語言 - JAVA教程 - Java鎖之阻塞鎖介紹和代碼實(shí)例

Java鎖之阻塞鎖介紹和代碼實(shí)例

2019-11-29 16:02junjie JAVA教程

這篇文章主要介紹了Java鎖之阻塞鎖介紹和代碼實(shí)例,阻塞鎖與自旋鎖不同,它改變了線程的運(yùn)行狀態(tài),需要的朋友可以參考下

鎖作為并發(fā)共享數(shù)據(jù),保證一致性的工具,在JAVA平臺(tái)有多種實(shí)現(xiàn)(如 synchronized 和 ReentrantLock等等 ) 。這些已經(jīng)寫好提供的鎖為我們開發(fā)提供了便利,但是鎖的具體性質(zhì)以及類型卻很少被提及。本系列文章將分析JAVA下常見的鎖名稱以及特性,為大家答疑解惑。

阻塞鎖

阻塞鎖,與自旋鎖不同,改變了線程的運(yùn)行狀態(tài)。
在JAVA環(huán)境中,線程Thread有如下幾個(gè)狀態(tài):

1,新建狀態(tài)

2,就緒狀態(tài)

3,運(yùn)行狀態(tài)

4,阻塞狀態(tài)

5,死亡狀態(tài)

阻塞鎖,可以說是讓線程進(jìn)入阻塞狀態(tài)進(jìn)行等待,當(dāng)獲得相應(yīng)的信號(hào)(喚醒,時(shí)間) 時(shí),才可以進(jìn)入線程的準(zhǔn)備就緒狀態(tài),準(zhǔn)備就緒狀態(tài)的所有線程,通過競(jìng)爭,進(jìn)入運(yùn)行狀態(tài)。

JAVA中,能夠進(jìn)入\退出、阻塞狀態(tài)或包含阻塞鎖的方法有 ,synchronized 關(guān)鍵字(其中的重量鎖),ReentrantLock,Object.wait()\notify(),LockSupport.park()/unpart()(j.u.c經(jīng)常使用)

下面是一個(gè)JAVA 阻塞鎖實(shí)例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package lock;
 
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import java.util.concurrent.locks.LockSupport;
 
public class CLHLock1 {
  public static class CLHNode {
    private volatile Thread isLocked;
  }
 
  @SuppressWarnings("unused")
  private volatile CLHNode                      tail;
  private static final ThreadLocal<CLHNode>              LOCAL  = new ThreadLocal<CLHNode>();
  private static final AtomicReferenceFieldUpdater<CLHLock1, CLHNode> UPDATER = AtomicReferenceFieldUpdater.newUpdater(CLHLock1.class,
                                          CLHNode.class, "tail");
 
  public void lock() {
    CLHNode node = new CLHNode();
    LOCAL.set(node);
    CLHNode preNode = UPDATER.getAndSet(this, node);
    if (preNode != null) {
      preNode.isLocked = Thread.currentThread();
      LockSupport.park(this);
      preNode = null;
      LOCAL.set(node);
    }
  }
 
  public void unlock() {
    CLHNode node = LOCAL.get();
    if (!UPDATER.compareAndSet(this, node, null)) {
      System.out.println("unlock\t" + node.isLocked.getName());
      LockSupport.unpark(node.isLocked);
    }
    node = null;
  }
}

在這里我們使用了LockSupport.unpark()的阻塞鎖。 該例子是將CLH鎖修改而成。

阻塞鎖的優(yōu)勢(shì)在于,阻塞的線程不會(huì)占用cpu時(shí)間,不會(huì)導(dǎo)致 CPu占用率過高,但進(jìn)入時(shí)間以及恢復(fù)時(shí)間都要比自旋鎖略慢。

在競(jìng)爭激烈的情況下 阻塞鎖的性能要明顯高于 自旋鎖。

理想的情況則是; 在線程競(jìng)爭不激烈的情況下,使用自旋鎖,競(jìng)爭激烈的情況下使用,阻塞鎖。

(全文完)

延伸 · 閱讀

精彩推薦
400
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本不卡一区二区三区在线观看 | 亚洲欧美一级久久精品国产特黄 | 日韩精品免费视频 | 成人短视频在线 | 亚洲 自拍 另类 欧美 丝袜 | 国产精品日韩在线观看 | 天天天操操操 | 久久久精品网 | 国产一区二区视频在线 | 欧洲色视频| 欧美日韩在线电影 | 天堂视频在线 | 日韩精品一区二区在线观看视频 | 国产视频亚洲 | 天天操操 | 午夜剧场在线免费观看 | 综合久久精品 | 免费色视频 | 欧美日韩亚洲综合 | 一区亚洲 | 激情五月婷婷基地 | 欧美一级免费看 | 免费日韩| 久久久久久久av | 中文字幕日韩欧美 | 国产一区二区精品在线 | 免费观看一级淫片 | 在线视频中文字幕 | 久久亚洲黄色 | 婷婷综合网 | 在线日本视频 | 亚洲 欧美 日韩在线 | 欧美黄色www | 成人国产精品视频 | 五月婷婷导航 | 在线中文视频 | 国产资源视频在线观看 | 欧美在线播放一区 | 欧美精品在线一区 | 日韩精品一区二区三区中文字幕 | 国产免费一区二区 |