当前位置:网站首页>Concept and implementation of QPS

Concept and implementation of QPS

2022-06-26 03:45:00 thoughtCodes

Survive by day and develop by night.
talk is cheap, show me the code,make a better result.

Catalog

summary

QPS Is a very common requirement .

demand :

1.QPS The implementation of the

package qps.demo;

/** * @desc QPS Controller test  * @author visy.wang * @date 2020/9/29 10:25 */
public class Main {
    
	/** *  In multithreaded environment , Please make sure you get it QPSCtrl Object is the same , *  It is recommended to initialize here , Of course, it can also be created in other ways ( But it must be the same ) *  Different QPSCtrl Objects are independent of each other  */
	private static QPSCtrl qpsCtrl1 = QPSCtrl.create(1);
// private static QPSCtrl qpsCtrl2 = QPSCtrl.create(3);
	
	public void test1(int i){
    
		// call ctrl() To achieve QPS The control of 
// System.out.println(Thread.currentThread().getName()+"\t"+System.currentTimeMillis()+" Start visiting \n");
// System.out.println(Thread.currentThread().getName());
		qpsCtrl1.ctrl();
		System.out.println(Thread.currentThread().getName()+"\t"+i+"(I) ");
// System.out.println(System.currentTimeMillis()+"END");
	}

// public void test2(int i){
    
// // beyond QPS Value will block here , Until the next cycle 
// qpsCtrl2.ctrl();
// System.out.print(i+"(II) ");
// }

	public static void main(String[] args) {
    

		 long startTime = System.currentTimeMillis();
// System.out.println(" Start and end "+startTime);

		Main testQPS = new Main();

		new Thread(()->{
    
			for(int i=1; i<=3; i++){
    
				testQPS.test1(i);
			}
		}).start();

		new Thread(()->{
    
			for(int i=4; i<=6; i++){
    
				testQPS.test1(i);
			}
		}).start();

		
		 long endTime=0L;
		new Thread(()->{
    
			for(int i=7; i<=12; i++){
    
				testQPS.test1(i);
				
			}
			
		}).start();
		
		  endTime = System.currentTimeMillis(); 
		
// System.out.println(" Start and end "+endTime);
			
// new Thread(()->{
    
// for(int i=13; i<=18; i++){
    
// testQPS.test2(i);
// }
// }).start();
			System.out.println(" Time consuming "+Long.valueOf(endTime-startTime));		

	}
}


test log:

 Time consuming 90
1656172702613===================== 
Thread-2	7(I) 
1656172703613===================== 
Thread-2	8(I) 
1656172704649===================== 
Thread-0	1(I) 
1656172705656===================== 
Thread-0	2(I) 
1656172706656===================== 
Thread-1	4(I) 
1656172707656===================== 
Thread-1	5(I) 
1656172708656===================== 
Thread-1	6(I) 
1656172709656===================== 
Thread-0	3(I) 
1656172710656===================== 
Thread-2	9(I) 
1656172711656===================== 
Thread-2	10(I) 
1656172712656===================== 
Thread-2	11(I) 
1656172713656===================== 
Thread-2	12(I) 

What I wonder is why the final output takes time ?

Design thinking

nothing

Analysis of implementation ideas

1.QPS Realization

Expand to achieve

Reference here :github: Simply implement the above process :
Entry level implementation :
: Partial source code implementation .
: The source code to achieve

Performance parameter test :

nothing

References and recommended readings

  1. QPS Detailed explanation .
  2. Recommended reading .

Welcome to , Dear brother , If it helps you , A little praise and a little attention !~

原网站

版权声明
本文为[thoughtCodes]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/177/202206260324527489.html