17 如何正确关闭线程池?shutdown 和 shutdownNow 的区别?
在本课时我们主要学习如何正确关闭线程池?以及 shutdown() 与 shutdownNow() 方法的区别?首先,我们创建一个线程数固定为 10 的线程池,并且往线程池中提交 100 个任务,如代码所示。
在本课时我们主要学习如何正确关闭线程池?以及 shutdown() 与 shutdownNow() 方法的区别?首先,我们创建一个线程数固定为 10 的线程池,并且往线程池中提交 100 个任务,如代码所示。
在本课时我们主要学习如何根据自己的实际需求设置线程池的各个参数来定制自己的线程池。
在本课时我们主要学习合适的线程数量是多少,以及 CPU 核心数和线程数的关系。
你可能经常在面试中被问到这两个问题,如果想要很好地回答它们首先你需要了解,我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能。在实际工作中,我们需要根据任务类型的不同选择对应的策略。
在本课时我们主要学习为什么不应该自动创建线程池,所谓的自动创建线程池就是直接调用 Executors 的各种方法来生成前面学过的常见的线程池,例如 Executors.newCachedThreadPool()。但这样做是有一定风险的,接下来我们就来逐一分析自动创建线程池可能带来哪些问题。
在本课时我们主要学习线程池内部结构,以及线程池中最常见的阻塞队列类型。
在本课时我们主要学习常见的 6 种线程池,并详细讲解 Java 8 新增的 ForkJoinPool 线程池,6 种常见的线程池如下。
本课时我们主要学习线程池有哪 4 种默认的拒绝策略。
本课时我们主要学习线程池各个参数的含义,并重点掌握线程池中线程是在什么时机被创建和销毁的。
在本课时我们主要学习为什么使用线程池比手动创建线程要好,并讲解具体好在哪里?
在本课时我们主要学习为什么多线程会带来性能问题?