线程池


池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。

线程池的好处:降低资源的消耗,提高响应速度,提高线程的可管理性。

实现Runnable接口和Callable接口的区别: Runnable接口不会返回结果或抛出检查异常,但Callable接口可以。

执行execute()方法和submit()方法的区别是什么呢?

       execute()方法用于提交不需要返回值的任务,无法判断任务是否被线程池执行

       submit()方法用于提交需要返回值的任务,会返回一个Future类型的对象,通过Future对象可以判断任务是否执行成功。

      

如何创建线程池?

     1.通过构造方法实现

     2.通过Executor框架的工具类Executors来实现。

线程池原理:我们在代码中模拟了 10 个任务,我们配置的核心线程数为 5 、等待队列容量为 100 ,所以每次只可能存在 5 个任务同时执行,剩下的 5 个任务会被放到等待队列中去。当前的5个任务中如果有任务被执行完了,线程池就会去拿新的任务执行。

线程池在项目中应用的场景:线程池一般用于执行多个不相关联的耗时任务,没有多线程的情况下,任务顺序执行,使用了线程池的话可让多个不相关联的任务同时执行。

如何使用线程池?通过ThreadPoolExecutor的构造函数来创建线程池,然后提交任务给线程池执行就可以。