Java并发编程之线程治理(Executor框架12)
Java并发编程之线程管理(Executor框架12)
上节
4.2 创建一个可变线程池大小的执行器
知道newCachedThreadPool()创建的ThreadPoolExecutor的缺陷后,有必要使用其它策略来克服这个问题。如果你想避免这个问题,Executor类提供了一个方法来创建一个可修复大小的线程执行器。这个线程执行器有一个最大线程数。如果你发送去的线程数超过这个数,Executor不会创建额外的线程,并且剩余的任务将被阻塞直到Executor有一个空闲的线程。伴随着这种行为,你确保了Executor不会产生一个性能很差的程序。
修改以前的代码,改变如下所示:
public Server(){ executor=(ThreadPoolExecutor)Executors.newFixedThreadPool(5); }
在这种情况下,你已经使用了Executor类的方法newFixedThreadPool()创建这个执行器。这个方法指定了线程的最大数量,从而保证了不会超出系统的负荷。如果你发送过多的线程数,剩余的任务会被阻塞直到有空闲的线程来执行它们。