为什么通过ThreadPoolExecutor创建线程池时,直接重写newThread()方法后,submit()方法或者executor()方法不会执行?
// 创建ThreadPoolExecutor
public static ThreadPoolExecutor createExecutors() {
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 7, 60L,
TimeUnit.SECONDS, new LinkedBlockingQueue(),createThreadFactory());
return executor;
}
//创建threadFactory
public static ThreadFactory createThreadFactory() {
// return new ThreadPoolTaskExecutor();
return new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
System.out.println("新建线程" + r.hashCode());
return new Thread("新建线程" + r.hashCode());
}
};
}
//提交任务
public static void create1() {
ThreadPoolExecutor ex = createExecutors();
ex.submit(new Runnable() {
@Override
public void run() {
System.out.println("任务开始执行" );
}
});
ex.shutdown();
}
如果threadFactory用重写的方式,仅仅新建了线程:

如果返回threadfactory的实现类,会正常执行任务:

如果我new ThreadPoolTaskExecutor();返回的话 就会正常执行到run()方法中的任务,但是如果我重写newThread()方法并且返回的话,则仅仅会新建线程而已,走不到submit()方法,请问原因是什么呢?