天天看点

JDK并发之:线程池四(自定义ThreadFactory)

ThreadPoolExecutor的构造函数中,线程的生成有ThreadFactory生成,构造函数中的ThreadFactory默认为Eexecutors.defaultThreadFactory()。 自定义ThreadFactory可以根治线程池究竟何时创建了多少线程,也可以自定义线程的名称、组以及优先级等信息,甚至可以任性的将线程设置为守护线程。总之,自定义ThreadFactory可以更加自由的设置线程池中所有线程的状态。 看个例子吧:

ThreadPoolExecutor executor = newThreadPoolExecutor(5,10, 0L, TimeUnit.MILLISECONDS,

              newSynchronousQueue(),

              new ThreadFactory() {       //自定义ThreadFactory

                  @Override

                  public Thread newThread(Runnable r) {

                     Thread t =  new Thread(r);

                     System.out.println("生成线程 "+t);

                     return t;

                  }

              });     

       Runnable r = ()->{

           System.out.println(Thread.currentThread().getName()+" 在忙...");

           try{

              Thread.sleep(100);

           }catch(InterruptedException e){

              e.printStackTrace();

           }

       };

       for(int i=0;i<10;i++){

           executor.submit(r);

       }

       executor.shutdown();