2013-12-13 90 views
0

我想在運行方法中顯示運行線程的名稱。這些線程在一個固定的線程池創建:如何獲得固定線程池中線程的名稱

ExecutorService e = Executors.newFixedThreadPool(size);

Java的API並不能幫助我,我該怎麼辦呢?

另外,知道如何自定義池中這些線程的名稱會很棒。

+0

Thread.currentThread()(一個靜態方法),然後線程實例上的Thread.getName()和Thread.setName()?它在線程類的API文檔中:http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html – reblace

回答

2

這裏的樣品,回答既您的問題:

ExecutorService es = Executors.newFixedThreadPool(4, new ThreadFactory() { 
     private final AtomicInteger counter = new AtomicInteger(1); 
     @Override 
     public Thread newThread(Runnable r) { 
      return new Thread(r, "MyThread-" + counter.getAndIncrement()); 
     } 
    }); 
    es.submit(new Runnable() { 
     @Override 
     public void run() { 
      System.out.println(Thread.currentThread().getName()); 
     } 
    }); 

ThreadFactory是來救援!請注意,線程不需要具有唯一的名稱。