1.介紹
ThreadFactory用來創建線程,需要實現newThread方法。
2.常用場景
線程重命名
設置守護進程
設置優先級
3.示例(線程重命名)
public class ThreadFactoryCreateNewThread { static class MyThreadFactory implements ThreadFactory { private AtomicInteger atomicInteger = new AtomicInteger(); @Override public Thread newThread(Runnable r) { int index = atomicInteger.incrementAndGet(); System.out.println("create no " + index + " thread"); Thread t = new Thread(r, "Thread-" + index); return t; } } static class MyRunnable implements Runnable { @Override public void run() { try { while (true) { Thread.currentThread(); Thread.sleep(1000); System.err.println(Thread.currentThread().getName()); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) throws InterruptedException { ExecutorService es = Executors.newFixedThreadPool(5, new MyThreadFactory()); es.execute(new MyRunnable()); es.execute(new MyRunnable()); } }