博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Semaphore示例
阅读量:6595 次
发布时间:2019-06-24

本文共 1539 字,大约阅读时间需要 5 分钟。

hot3.png

停车场的停车位数量是固定的,Semaphore就像是停车场的管理员控制总的停车数量,如果车位已满,只能出一辆进一辆

Semaphore semaphore=new Semaphore(2);

控制车位数是2,默认不是公平的

Semaphore semaphore=new Semaphore(2,true);

车位数是2,公平锁,先到先停车

package com.vincent.juc; import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit; /** * Vincent 创建于 2016/6/1. *  信号灯 */public class SemaphoreDemo {    public static void main(String[] args) {       final Semaphore semaphore=new Semaphore(2,true);         ExecutorService threadPool = Executors.newCachedThreadPool();         final Random random=new Random();         for(int i=0;i<10;i++){            threadPool.execute(new Runnable() {                @Override                public void run() {                    long id = Thread.currentThread().getId();                    try {                        semaphore.acquire();                        System.out.println(id+"获取到锁");                        int t = random.nextInt(5);                        TimeUnit.SECONDS.sleep(t+1);                     } catch (InterruptedException e) {                        e.printStackTrace();                    }finally {                        System.out.println(id+"释放锁");                        semaphore.release();                    }                }            });        }     }}

输出:

12获取到锁13获取到锁12释放锁14获取到锁13释放锁17获取到锁17释放锁15获取到锁14释放锁18获取到锁15释放锁16获取到锁18释放锁19获取到锁19释放锁20获取到锁16释放锁21获取到锁21释放锁20释放锁

 

转载于:https://my.oschina.net/vincentzhao/blog/685665

你可能感兴趣的文章
在POM配置Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”的解决方案...
查看>>
网络配置和系统管理操作
查看>>
#pragma once与 #ifndef的区别
查看>>
python之字符编码(三)
查看>>
前三次作业总结——分析与反思
查看>>
【BZOJ2117】 [2010国家集训队]Crash的旅游计划
查看>>
C++内存释放问题~
查看>>
安装ESXI 5.5卡在LSI_MR3.V00解决方案
查看>>
java反射
查看>>
自定义页面,组件加载
查看>>
UIimageView的contentmodel现实模式一看就懂
查看>>
C语言基础学习5:字符串与指针
查看>>
开源中国+soucetree
查看>>
jsp的九大内置对象和四大作用域
查看>>
步步为营 .NET三层架构解析系列总结
查看>>
【Scala篇】--Scala初始与基础
查看>>
RecyclerView实例-实现可下拉刷新上拉加载更多并可切换线性流和瀑布流模式(1)...
查看>>
Java基础之Switch语句
查看>>
小泉的难题 结构体
查看>>
CentOS 7 安装Hadoop 2.7.1
查看>>