国产探花免费观看_亚洲丰满少妇自慰呻吟_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);
 }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鸡泽县| 黎城县| 海南省| 伽师县| 甘肃省| 福海县| 河源市| 汾西县| 台安县| 大城县| 平武县| 彭州市| 兴国县| 上饶县| 新兴县| 茂名市| 长泰县| 昌邑市| 仁怀市| 明水县| 苗栗县| 司法| 北安市| 连江县| 鞍山市| 无棣县| 泉州市| 彩票| 呼伦贝尔市| 谢通门县| 英德市| 武穴市| 临海市| 铁力市| 龙口市| 桓仁| 金坛市| 穆棱市| 和硕县| 汤阴县| 都兰县|