亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java并發(fā)編程專題(六)----淺析(JUC)Semaphore

 更新時間:2020年07月01日 10:59:11   作者:rickiyang  
這篇文章主要介紹了java JUC)Semaphore的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下

半路開始看的朋友可以回顧一下前幾篇

java并發(fā)編程專題(一)----線程基礎知識

java并發(fā)編程專題(二)----如何創(chuàng)建并運行java線程

java并發(fā)編程專題(三)----詳解線程的同步

java并發(fā)編程專題(四)----淺談(JUC)Lock鎖

java并發(fā)編程專題(五)----詳解(JUC)ReentrantLock

Semaphore,從字面意義上我們知道他是信號量的意思。在java中,一個計數(shù)信號量維護了一個許可集。Semaphore 只對可用許可的號碼進行計數(shù),并采取相應的行動。拿到信號量的線程可以進入代碼,否則就等待。通過acquire()和release()獲取和釋放訪問許可。

信號量Semaphore是一個控制訪問多個共享資源的計數(shù)器,它本質(zhì)上是一個“共享鎖”。

Java并發(fā)提供了兩種加鎖模式:共享鎖和獨占鎖。前面介紹的ReentrantLock就是獨占鎖。對于獨占鎖而言,它每次只能有一個線程持有,而共享鎖則不同,它允許多個線程并行持有鎖,并發(fā)訪問共享資源。

獨占鎖它所采用的是一種悲觀的加鎖策略, 對于寫而言為了避免沖突獨占是必須的,但是對于讀就沒有必要了,因為它不會影響數(shù)據(jù)的一致性。如果某個只讀線程獲取獨占鎖,則其他讀線程都只能等待了,這種情況下就限制了不必要的并發(fā)性,降低了吞吐量。而共享鎖則不同,它放寬了加鎖的條件,采用了樂觀鎖機制,它是允許多個讀線程同時訪問同一個共享資源的。

舉一個生活中的例子,有一條單行道路口有一紅綠燈在正常的綠燈時間內(nèi)如果騎車速度都很平均只能過去20輛車,這就意味著排在前面的20輛肯定能過去紅綠燈,后面的就只能等下一個綠燈了。但是如果這個時候有車不想過去這個路口它駛向了邊上別的路,那么后面的車就有機會。下面我們來看一個簡單的例子:

public class TestSemaphore {
 public static void main(String[] args) {
  final Semaphore semaphore = new Semaphore(5);
  ExecutorService executorService = Executors.newCachedThreadPool();
  for(int i = 0;i<10;i++){
   int j = 0;
   executorService.submit(new A("car"+(j++),semaphore),"Thread"+(j++));
   //new Thread(new A("car"+(j++),semaphore),"Thread"+(j++)).start();
   if(i == 5){
    try {
     Thread.sleep(1000);
     System.out.println("最后還有"+semaphore.availablePermits()+"個許可可用");
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
   }
  }

  System.out.println("最后還有"+semaphore.availablePermits()+"個許可可用");
 }

 }
 class A implements Runnable{
  String carName;
  private Semaphore semaphore;

  public A(String carName, Semaphore semaphore){
   this.carName = carName;
   this.semaphore = semaphore;
  }

  public void getWay(){
   System.out.println("this car is get the way" + Thread.currentThread().getName());
  }

  public void run() {
   try {
    if(semaphore.availablePermits() > 0){
     semaphore.acquire();
     getWay();
     semaphore.release();
    }else{
     System.out.println("請等待========");
    }
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }

以上就是java并發(fā)編程專題(六)----淺析(JUC)Semaphore的詳細內(nèi)容,更多關于JAVA Semaphore的資料請關注腳本之家其它相關文章!

相關文章

  • JDK  keytool證書工具功能代碼解析

    JDK keytool證書工具功能代碼解析

    這篇文章主要介紹了JDK keytool證書工具功能代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 使用Spring Security控制會話的方法

    使用Spring Security控制會話的方法

    在本文中,我們將說明Spring Security如何允許我們控制HTTP會話。這篇文章主要介紹了使用Spring Security控制會話 ,需要的朋友可以參考下
    2019-05-05
  • Java中Stringbuild,Date和Calendar類的用法詳解

    Java中Stringbuild,Date和Calendar類的用法詳解

    這篇文章主要為大家詳細介紹了Java中Stringbuild、Date和Calendar類的用法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • 如何自定義MyBatis攔截器更改表名

    如何自定義MyBatis攔截器更改表名

    自定義MyBatis攔截器可以在方法執(zhí)行前后插入自己的邏輯,這非常有利于擴展和定制 MyBatis 的功能,本篇文章實現(xiàn)自定義一個攔截器去改變要插入或者查詢的數(shù)據(jù)源?,需要的朋友可以參考下
    2023-10-10
  • Spring MVC 中 AJAX請求并返回JSON的示例

    Spring MVC 中 AJAX請求并返回JSON的示例

    本篇文章主要介紹了Spring MVC 中 AJAX請求并返回JSON,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • SpringBoot整合redis+Aop防止重復提交的實現(xiàn)

    SpringBoot整合redis+Aop防止重復提交的實現(xiàn)

    Spring Boot通過AOP可以實現(xiàn)防止表單重復提交,本文主要介紹了SpringBoot整合redis+Aop防止重復提交的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 淺析Java?NIO?直接緩沖區(qū)和非直接緩沖區(qū)

    淺析Java?NIO?直接緩沖區(qū)和非直接緩沖區(qū)

    本篇文章主要為大家介紹了Java?NIO?中直接緩沖區(qū)和非直接緩沖區(qū)的定義以及使用流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Java入門基礎之抽象類與接口

    Java入門基礎之抽象類與接口

    對于面向?qū)ο缶幊虂碚f,抽象是它的一大特征之一,在 Java 中可以通過兩種形式來體現(xiàn)OOP的抽象:接口和抽象類,下面這篇文章主要給大家介紹了關于Java入門基礎之抽象類與接口的相關資料,需要的朋友可以參考下
    2022-02-02
  • java打印指定年月的日歷

    java打印指定年月的日歷

    這篇文章主要為大家詳細介紹了Java如何打印指定年月的日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Spring boot @ModelAttribute標注的實現(xiàn)

    Spring boot @ModelAttribute標注的實現(xiàn)

    這篇文章主要介紹了Spring boot @ModelAttribute標注的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01

最新評論