Java并发编程之线程治理(Executor框架12)

Java并发编程之线程管理(Executor框架12)

          上节

4.2   创建一个可变线程池大小的执行器

    知道newCachedThreadPool()创建的ThreadPoolExecutor的缺陷后,有必要使用其它策略来克服这个问题。如果你想避免这个问题,Executor类提供了一个方法来创建一个可修复大小的线程执行器。这个线程执行器有一个最大线程数。如果你发送去的线程数超过这个数,Executor不会创建额外的线程,并且剩余的任务将被阻塞直到Executor有一个空闲的线程。伴随着这种行为,你确保了Executor不会产生一个性能很差的程序。

修改以前的代码,改变如下所示:

      public Server(){
             executor=(ThreadPoolExecutor)Executors.newFixedThreadPool(5);
      }


    在这种情况下,你已经使用了Executor类的方法newFixedThreadPool()创建这个执行器。这个方法指定了线程的最大数量,从而保证了不会超出系统的负荷。如果你发送过多的线程数,剩余的任务会被阻塞直到有空闲的线程来执行它们。