`
promisepk
  • 浏览: 4017 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java控制每秒访问量

    博客分类:
  • java
阅读更多
记录下java高并发控制每秒接口访问量


package test.thread.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

public class TestSemaphore {
	final static int MAX_QOS = 10;
	
	private static int count = 0;
	final static Semaphore semaphore = new Semaphore(MAX_QOS);
	public static void main(String[] args) throws InterruptedException {
		long startL = System.currentTimeMillis();
		ScheduledExecutorService  schePool = Executors.newScheduledThreadPool(1);
		schePool.scheduleAtFixedRate(new Runnable(){
			@Override
			public void run() {
				System.out.println("访问量:"+count);
				count=0;
				semaphore.release(MAX_QOS/3);
			}
			
		}, 1000, 1000, TimeUnit.MILLISECONDS);
		ExecutorService pool = Executors.newFixedThreadPool(10);
		for(int i=100;i>0;i--){
			pool.submit(new Runnable(){
				@Override
				public void run() {
					for(int j=10;j>0;j--){
						semaphore.acquireUninterruptibly(1);
						call();
					}
				}
				
			});
		}
		pool.shutdown();
		pool.awaitTermination(1, TimeUnit.HOURS);
		System.out.println("done cost:"+(System.currentTimeMillis()-startL)/1000);
		
	}
	
	public static synchronized void call(){
		count++;
		System.out.println(count);
	}
}


分享到:
评论

相关推荐

    JAVA服务端访问量与响应时间统计工具 与 过载保护工具

    如果我现在的服务里接口1只能 支撑每1秒100次请求,那么如果1秒在100次以上的请求(如110次),那多出的10次就要主动拒绝服务。不然服务就会支持不住。本工具就是为这个而做。 1、单机内存版用来防止自己挂掉 2、...

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java时间控制代码

    `java.util.Timer`是一个轻量级的定时器类,它可以用来调度定时任务。它支持两种类型的调度:一次性执行(即只执行一次)和周期性执行(即重复执行)。`Timer`类内部使用了一个单线程的`Executor`来执行任务,因此它...

    Java读取大数据量Excel的方法(POI)

    可以使用`iterator()`方法遍历所有Row,然后对每个Row使用`getCell(int columnIndex)`方法访问其Cell: ```java for (Row row : sheet) { if (row.getRowNum() == 0) continue; // 跳过表头 for (Cell cell : ...

    SpringBoot 接口访问频率限制(一)

    对于频率控制,我们可以在每个API调用前检查其调用频率,并在超过限制时返回错误信息。 以下是一种基本的实现方式: 1. 创建一个自定义的注解,例如`@RateLimit`,用于标记需要限制的接口。 ```java @Target...

    java源码包3

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java 多线程制作动画

    Java提供了多种同步机制,如synchronized关键字、wait()和notify()方法、Semaphore信号量以及CyclicBarrier和CountDownLatch等工具类。例如,如果两个线程需要交替进行(半径变化后圆心移动,或反之),可以使用wait...

    java实现csv导出千万级数据实例

    同时,通过合理设置批处理大小,可以控制每次处理的数据量,确保系统资源的有效利用。 在实现过程中,可能包含以下关键步骤: 1. **数据分页**:根据数据库查询能力,设定合适的分页大小,如10000条或20000条,...

    java源码包2

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历...

    java 视屏抽帧

    Java 视频抽帧技术是将视频中的每一帧图像提取出来,形成独立的图片文件的过程。这在多媒体处理、图像分析、计算机视觉等领域有广泛应用,例如制作动图、视频预览或者进行视频内容分析等。在Java中实现视频抽帧需要...

    java开源包6

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包9

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包101

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包4

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包5

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包8

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包10

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包3

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包1

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    Java资源包01

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

Global site tag (gtag.js) - Google Analytics