线程池的基本概念

什么是线程池

在日常的实际开发中,我们为了提升开发的效率需要将业务代码采用多线程的方式去执行。可以将一个工作任务划分成几个线程,分别交给几个不同的线程去执行,最后汇总起来就可以实现业务的效果。
例如在业务操作中,需要发送短信或者邮件。我们可以使用异步的方式去实现,那便是再去构建一个线程去执行。
话说回来要是每次的异步操作或者多线程操作都需要去创建一个新的线程,在使用完毕之后线程再被销毁,如此往复会对系统造成一些额外的开销。
所以我们需要一个线程池机制去管理在处理过程中,创建了多少个线程去处理多少任务。
线程池的概念和JDBC中的连接池类似,都是一个Java集合中存储了大量的线程对象,每次要执行的多线程操作或者异步操作的时候,不需要重新去创建线程,只需要从线程池集合中拿到线程对象直接去执行方法就可以。

JDK中提供的线程池类

在JDK中提供了线程池的类,在线程池的构建初期,可以将任务提交到线程池中。线程池会根据一定的异步机制去执行你所分配的任务。

  • 可能任务被直接执行。
  • 可能当前任务被暂时存储起来,等到有空闲的线程再去执行这个任务。
  • 可能任务被拒绝了,无法执行。

在JDK中提供的线程池记录了每个线程处理了多少任务,以及整个线程处理了多少任务。同时也可以根据任务的执行前后去执行一些钩子函数的实现,这点有点类似于spring中的AOP。可以在任务执行的前后做一些日志信息,这样子可以从多方面统计线程池执行任务的一些内容详细参数等等。。。。。。

你可能感兴趣的:(Java并发编程,java,spring,开发语言)