Semaphore的使用

  Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,香港虚拟主机,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。

Semaphore的主要方法摘要:

  void acquire():从此信号量获取一个许可,在提供一个许可前一直将线程阻塞,否则线程被中断。

  void release():释放一个许可,香港服务器,将其返回给信号量。

  int availablePermits():返回此信号量中当前可用的许可数。

  boolean hasQueuedThreads():查询是否有线程正在等待获取。

下面是一个例子:

1 package com.thread; java.util.concurrent.ExecutorService; 4 import java.util.concurrent.Executors; 5 import java.util.concurrent.Semaphore; SemaphoreTest { main(String[] args) { 9ExecutorService service = Executors.newCachedThreadPool();(int i=0;i<10;i++){12try {13Thread.sleep(100);14} catch (InterruptedException e2) {15 e2.printStackTrace();16 }17Runnable runnable = new Runnable(){ run(){19try {} catch (InterruptedException e1) {22 e1.printStackTrace();23 }24System.out.println(“线程” + Thread.currentThread().getName() + 25″进入,当前已有” + (3-sp.availablePermits()) + “个并发”);26try {27Thread.sleep((long)(Math.random()*10000));28} catch (InterruptedException e) {29 e.printStackTrace();30 }31System.out.println(“线程” + Thread.currentThread().getName() + 32″即将离开”);33sp.release();//释放许可,许可数加1System.out.println(“线程” + Thread.currentThread().getName() + 36″已离开,当前已有” + (3-sp.availablePermits()) + “个并发”);37 }38 };39 service.execute(runnable);40 }41 }42 43 },虚拟主机人生最好的旅行,就是你在一个陌生的地方,

Semaphore的使用

相关文章:

你感兴趣的文章:

标签云: