博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Semaphore维护当前访问自身的线程个数
阅读量:6801 次
发布时间:2019-06-26

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

可以实现流量控制,同时访问文件的用户数

import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class SemaphoreTest {    public static void main(String[] args) {        ExecutorService service = Executors.newCachedThreadPool();        final  Semaphore sp = new Semaphore(3);//创建Semaphore信号量,初始化许可大小为3        Runnable runnable = new Runnable(){            public void run(){            try {                sp.acquire();//请求获得许可,如果有可获得的许可则继续往下执行,许可数减1。否则进入阻塞状态            } catch (InterruptedException e1) {                e1.printStackTrace();            }            System.out.println("线程" + Thread.currentThread().getName() +                     "进入,当前已有" + (3-sp.availablePermits()) + "个并发");            try {                Thread.sleep((long)(Math.random()*10000));            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println("线程" + Thread.currentThread().getName() +                     "即将离开");                                sp.release();//释放许可,许可数加1            //下面代码有时候执行不准确,因为其没有和上面的代码合成原子单元            System.out.println("线程" + Thread.currentThread().getName() +                     "已离开,当前已有" + (3-sp.availablePermits()) + "个并发");                            }    };        for(int i=0;i<10;i++){            service.execute(runnable); //提交十个任务                   }    }                                                                                                                   }

本文出自 “” 博客,请务必保留此出处

转载地址:http://wcfwl.baihongyu.com/

你可能感兴趣的文章
你会用Python写洗脑神曲吗?
查看>>
Win32 文件(3)
查看>>
一款基于css3鼠标经过圆形旋转特效
查看>>
【温故而知新-Javascript】使用 Window 对象
查看>>
成功站长应具备的良好心态
查看>>
Android App测试要点
查看>>
Laravel 中使用 puppeteer 采集异步加载的网页内容
查看>>
Spring中使用ActiveMQ
查看>>
【数据结构】Java语言描述-循环链表和双向链表操作
查看>>
什么是跨域以及几种简单解决方案
查看>>
微信小程序生成二维码工具
查看>>
Java NIO 之 ServerSocketChannel 与 SocketChannel
查看>>
Hyper-V增强会话模式
查看>>
mysql 对插入超过表字段限制时的处理
查看>>
系统现在无法让您登录,因为域不可用
查看>>
lzg_ad:更换XPE开关机画面和欢迎界面
查看>>
C# 视频监控系列(10):服务器端——验证、设置画面质量、字幕叠加、板卡序列号...
查看>>
Tomcat集群与负载均衡
查看>>
ZAM 3D入门教程(1):初识ZAM 3D
查看>>
nagios安装
查看>>