package test.date; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import com.google.common.util.concurrent.RateLimiter; /** * http://developer.51cto.com/art/201510/495062.htm **/ public class TestPerSeconds { // rate is "2 permits per second" final RateLimiter rateLimiter = RateLimiter.create(2.0); void submitTasks(List<Runnable> tasks, Executor executor) { for (Runnable task : tasks) { rateLimiter.acquire(); // may wait executor.execute(task); } } public void test() { Executor executor = Executors.newFixedThreadPool(2); List<Runnable> list = new ArrayList<>(); for (int i = 0; i < 100; i++) { list.add(new RunnableAdapter()); } submitTasks(list, executor); } public static void main(String[] args) { new TestPerSeconds().test(); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } } } class RunnableAdapter implements Runnable { static int i = 0; @Override public void run() { System.out.println(++i); } }
限速器
猜你喜欢
转载自jis117.iteye.com/blog/2328064
今日推荐
周排行