当前位置: 首页 > 网络应用技术

简单使用Java线程池

时间:2023-03-06 16:29:23 网络应用技术

  对于资源池的技术,我相信每个人都已经与数据库连接池,CONCON CO3P0,DBCP等接触,并且线程也具有相应的池,称为线程池。

  Java提供了执行者类来创建线程池,例如:::

  指定线程数的线程池可以通过NewFixedThreadPool()方法获得。

  另一个例子:

  您可以通过newsinglethreadexecutor()方法获得带有许多线程的线程池。

  除了:

  通过NewCachedHreadPool()方法,可以根据需要获得创建线程的线程池,该线程将根据任务数创建相应数量的线程数。

  我们发现可以通过执行者类创建各种线程池,但是Alibaba Java开发手册不建议我们使用执行者类创建线程。相反,有必要手动创建:

  那么如何手动创建线程池呢?

  公共静态void main(string [] args){

  threadpoolexecutor executor = new threadpoolexecutor(

  5,

  10,

  5L,

  timeunit.seconds,

  新的Arrayblockingqueue<>(3),,,,

  opecutors.defaultthreadfactory(),

  new threadPoolExecutor.callerrunspolicy());

  opecutor.execute(() - > {{{

  System.out.println(“ Hello World”);

  });

  }构造ThreadPoolExecutor对象以获取线程池,但是需要指定七个参数,如下:

  其中,核心线程的数量表示线程池中的核心线程。在任何情况下,它们都不会被回收。创建线程的工厂用于指定创建线程。通常,饱和策略是指处理任务。

  对于一个简单的示例,现在有10个任务等待执行,因为我们的核心线程为5,因此线程池将首先创建5个线程以执行5个任务。将发布其余5个任务。任务队列,任务队列的容量仅为3个,因此任务队列只能放下3个任务。剩下的两个任务不能放入队列中,线程池将创建两个非核心线程来执行它们。时间线程池中的线程数达到最大线程数,这将触发饱和策略。例如,这里的Callerrunspolicy策略将直接丢弃新任务。