多线程并发工具 Semaphore
作用:控制同一时间对共享区域的访问量
********************
相关类
Semaphore
public class Semaphore implements java.io.Serializable {
*******
构造方法
public Semaphore(int permits)
public Semaphore(int permits, boolean fair)
*******
获得1个信号
public void acquire() throws InterruptedException
public void acquireUninterruptibly()
public boolean tryAcquire()
public boolean tryAcquire(long timeout, TimeUnit unit) throws InterruptedException
*******
获得permits个信号
public void acquire(int permits) throws InterruptedException
public void acquireUninterruptibly(int permits)
public boolean tryAcquire(int permits)
public boolean tryAcquire(int permits, long timeout, TimeUnit unit) throws InterruptedException
*******
释放信号
public void release() //释放1个信号
public void release(int permits) //释放permits个信号
}
********************
示例
class Thread10 implements Runnable{
private Semaphore semaphore=new Semaphore(5);
@Override
public void run() {
try{
semaphore.acquire();
System.out.println("获得信号"+System.currentTimeMillis());
Thread.sleep(4000);
}catch (Exception e){
e.printStackTrace();
}finally {
semaphore.release();
}
}
}
public class ThreadTest10 {
public static void main(String[] args){
Thread10 t=new Thread10();
for(int i=0;i<10;i++){
Thread thread=new Thread(t);
thread.start();
}
}
}
************************
控制台输出
获得信号1568859065132
获得信号1568859065131
获得信号1568859065132
获得信号1568859065131
获得信号1568859065131
获得信号1568859069166
获得信号1568859069166
获得信号1568859069167
获得信号1568859069166
获得信号1568859069167