博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现流控-Semaphore
阅读量:6412 次
发布时间:2019-06-23

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

网上类似文章很多,不多说,直接上代码:

/** * 流控类(Semaphore实现) *  * @author ln * */public class FlowControl {	/**	 * 最大访问量	 */	private static final int MAX_ACCESS_COUNT = 20;	/**	 * 只能有MAX_ACCESS_COUNT个线程数同时访问	 */	private static final Semaphore semaphore = new Semaphore(MAX_ACCESS_COUNT);	public static void main(String[] args) {		// 线程池		ExecutorService exec = Executors.newCachedThreadPool();		// 模拟30个客户端		for (int i = 0; i < 30; i++) {			Runnable run = new Runnable() {				@Override				public void run() {					try {						// 1秒钟内得不到许可,则丢弃访问。						if (semaphore.tryAcquire(1, TimeUnit.SECONDS)) {							System.out.println("正在执行...");							//做一些事情...							Thread.sleep(2 * 1000);							System.out.println("执行完毕!");						} else {							System.out.println("访问被拒绝!!!");						}					} catch (InterruptedException e) {						e.printStackTrace();					} finally {						// 执行完成,释放许可。						semaphore.release();					}				}			};			exec.execute(run);		}		// 关闭线程池		exec.shutdown();	}}

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

你可能感兴趣的文章
用python的smtplib发送邮件python2,3都可以使用
查看>>
我在新浪微博的第1000篇,截图纪念。
查看>>
Graphx处理janusGraph数据实现
查看>>
Oracle Study之案例--重建数据库控制文件
查看>>
log4j&slf4j日志框架入门
查看>>
五子棋精髓
查看>>
记一次升级Oracle驱动引发的死锁
查看>>
php加速器eaccelerator概述
查看>>
SER2012安装和激活终端激活
查看>>
微容器:更小的,更轻便的Docker容器
查看>>
TXT 文本阅读器源码
查看>>
java异常
查看>>
SQL2008笔记(一)
查看>>
Linux通过命令发送邮件
查看>>
HttpClient4.4 登录知乎(详细过程)
查看>>
网站被刷流量简单处理的一次
查看>>
初中-高中-大学-10年学习情况的精彩回顾和分析
查看>>
框架学习的4种境界
查看>>
多VLAN Flex Connect 模式配置手册-By Eric
查看>>
Eclipse常用设置
查看>>