Samples JDK
Test.java
1 package com.freemindcafe.concurrency.sample4;
2 
3 import java.util.Date;
4 import java.util.concurrent.TimeUnit;
5 
6 public class Test {
7 
8  @org.junit.Test
9  public void test1() throws Exception{
10  //Can send 2 requests per minute each having max 2 events
11  ISender<MyEvent> sender = new ThrottlingSender<MyEvent>(1, 30, TimeUnit.SECONDS, 1, l -> {System.out.println(new Date());System.out.println(l);});
12  for(int i=1; i<=5; i++){
13  sender.send(new MyEvent(i));
14  }
15 
16  synchronized(sender){
17  sender.wait();
18  }
19  }
20 
21  @org.junit.Test
22  public void test2() throws Exception{
23  //Can send 2 requests per minute each having max 1 events
24  ISender<MyEvent> sender = new ThrottlingSender<MyEvent>(2, 10, TimeUnit.SECONDS, 2, l -> {System.out.println(new Date());System.out.println(l);});
25  for(int i=1; i<=15; i++){
26  sender.send(new MyEvent(i));
27  }
28 
29  synchronized(sender){
30  sender.wait();
31  }
32  }
33 
34  private class MyEvent{
35  private final int num;
36 
37  private MyEvent(int num){
38  this.num = num;
39  }
40 
41  public String toString(){
42  return "[ "+num+" ]";
43  }
44  }
45 
46 }