new Thread和newSingleThreadExecutor()的区别

我们应用 newSingleThreadExecutor 去单线程的去运行一个东西的逻辑为:
在这里插入图片描述
在这里插入图片描述
档线程i=5时 它会报错,但是只是这个线程会报错。不影响其它线程继续运行

二当我们采用常规方式运行程序的方式为

ffor(int i=0;i<20;i++) {
new Thread(new ListeningTask()).start();
}
其实会启动很多的线程去运行程序。

这种实现方式其实有很多弊端
a. 每次new Thread新建对象性能差。
b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 c. 缺乏更多功能,如定时执行、定期执行、线程中断。 相比new Thread,Java提供的四种线程池的好处在于: a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。 b. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。 c. 提供定时执行、定期执行、单线程、并发数控制等功能。