728x90
반응형
public class Main{
public static void main(String[] args) throws InterruptedException {
RateLimiterExample rateLimiterExample = new RateLimiterExample();
for(int i = 0; i < 999999999; i++){
rateLimiterExample.test2(i);
}
}
}
import com.google.common.util.concurrent.RateLimiter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class RateLimiterExample {
// public RateLimiter rateLimiterTemp;
RateLimiter limiterTemp = RateLimiter.create(20.0);
// RateLimiterExample(RateLimiter rateLimiterTemp){
// this.rateLimiterTemp = rateLimiterTemp; // injection of obejct
// }
public String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long timeInMillis = System.currentTimeMillis();
Date timeInDate = new Date(timeInMillis);
return sdf.format(timeInDate) +" : ";
}
public void test2(int iRateChangePos) throws InterruptedException {
if(iRateChangePos == 50000000 ){
limiterTemp = RateLimiter.create(5.0);
System.out.println("rate has changed!!");
System.out.println("rate has changed!!");
System.out.println("rate has changed!!");
System.out.println("rate has changed!!");
}
if(iRateChangePos == 100000000 ){
limiterTemp = RateLimiter.create(30.0);
System.out.println("rate has changed!!");
System.out.println("rate has changed!!");
System.out.println("rate has changed!!");
System.out.println("rate has changed!!");
}
if(this.limiterTemp.tryAcquire() == true){
System.out.println(getDate() +"!!--OK--");
}else{
// System.out.println(getDate() +"XX");
}
// Thread.sleep(100);
}
public void test() throws InterruptedException {
System.out.println(getDate() + "test function start");
RateLimiter limiter = RateLimiter.create(20.0);
//per senc executable rate count
Timer timer = new Timer(true);
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
if (limiter.tryAcquire()) {
System.out.println(getDate() +"!! OK");
} else {
System.out.println(getDate() +"XX");
}
}
}, 0, 10); // 0.1초마다 실행
Thread.sleep(1500);
System.out.println(getDate() +"test function end");
}
}
728x90
반응형
'Languages > java' 카테고리의 다른 글
[java] 기상청 초단기실황조회(getUltraSrtNcst) Mysql(JDBC) 저장 (0) | 2023.04.23 |
---|---|
[intellij] runnable jar 만들기 (0) | 2023.04.23 |
[java] centos java 1.8 설치 (0) | 2023.04.23 |
[java] mysql8.0 접속 (0) | 2023.04.22 |
[java] String to Inputstream 변환 (0) | 2023.04.20 |