接下来就该测试咱们需要的效果是否能实现了:
public class MyShareLockTester {public static void main(String[] args) throws InterruptedException {// 用自定义AQS共享锁实现// 一次允许发放三把锁MyShareLock.count = 3;final Lock lock = new MyShareLock();// 模拟20个客户端访问for (int i = 0; i < 20; i++) {new Thread(new Runnable() {@Overridepublic void run() {try {lock.lock();System.out.println("持有 " + Thread.currentThread().getName() + " 的客人可以进餐厅就餐");// 每两次叫号之间间隔一段时间 , 模拟真实场景Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();} finally {// 使用完成释放锁lock.unlock();}}}).start();}}}这里有20个号,每次只能发放3张,运行之后就可以看到确实如此 。
AQS是个很神奇也很好玩的东西 , 就像它的作者(也是除了高司令就是对Java影响最大的那个人,整个Java的多线程juc包代码就是他编写的)Doug Lea在AbstractQueuedSynchronizer的注释中所说:AQS只是一个框架,至于怎么玩,就是你的事了!
感谢您的大驾光临!咨询技术、产品、运营和管理相关问题 , 请关注后留言 。欢迎骚扰,不胜荣幸~
推荐阅读
- 三十九 Java开发学习----SpringBoot整合mybatis
- JavaSPI详解
- oppoa53的像素是多少_oppoa53摄像头参数
- 浙江省干部网络培训学院-义乌干部教育网络学院如何多开操作?
- qq飞车怎么结婚变性,会怎么样(qq飞车手游多少级能结婚)
- 五 Selenium4+Python3系列 - 多窗口处理之句柄切换
- day04-JavaScript01
- qq飞车怎么结婚(qq飞车普通婚礼多少钱)
- iphone13海南免税店多少钱_iphone13海南免税店价格
- 小米10s像素多少_小米10s像素怎么样