国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java線程并發semaphore類示例

2019-11-26 15:46:20
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

package com.yao;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

/**
 * Java 5.0里新加了4個協調線程間進程的同步裝置,它們分別是:
 * Semaphore, CountDownLatch, CyclicBarrier和Exchanger.
 * 本例主要介紹Semaphore。
 * Semaphore是用來管理一個資源池的工具,可以看成是個通行證,
 * 線程要想從資源池拿到資源必須先拿到通行證,
 * 如果線程暫時拿不到通行證,線程就會被阻斷進入等待狀態。
 */
public class MySemaphore extends Thread {

 private int i;
 private Semaphore semaphore;

 public MySemaphore(int i,Semaphore semaphore){
  this.i = i;
  this.semaphore = semaphore;
 }

 public void run(){
  if(semaphore.availablePermits() > 0){
   System.out.println(""+i+"有空位 : ");
  }else{
   System.out.println(""+i+"等待,沒有空位 ");
  }
  try {
   semaphore.acquire();
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println(""+i+"獲得空位");
  try {
   Thread.sleep((int)Math.random()*10000);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println(""+i+"使用完畢");
  semaphore.release();
 }
 public static void main(String[] args) {
  Semaphore semaphore = new Semaphore(2);
  ExecutorService service = Executors.newCachedThreadPool();
  for(int i = 0 ;i<10 ; i++){
   service.execute(new MySemaphore(i,semaphore));
  }
  service.shutdown();
  semaphore.acquireUninterruptibly(2);
  System.out.println("使用完畢,需要清掃了");
  semaphore.release(2);
 }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺义区| 子洲县| 祁阳县| 塔河县| 石渠县| 岳西县| 华亭县| 玛曲县| 阜康市| 宁安市| 长宁区| 新民市| 鸡西市| 东丰县| 基隆市| 凤冈县| 樟树市| 惠来县| 绥棱县| 长沙县| 鄄城县| 榆树市| 沾化县| 武乡县| 明水县| 蒙自县| 新竹市| 疏附县| 乌兰察布市| 高陵县| 白河县| 商水县| 凤台县| 江城| 鄢陵县| 宝应县| 依兰县| 云和县| 德兴市| 五大连池市| 扶沟县|