首页 > 编程知识 正文

线程池java(java线程池的使用例子)

时间:2023-05-04 13:13:20 阅读:86252 作者:2442

在更新Java5时,Sun大幅扩展了Java线程的类库。 其中的线程池也是其中之一。 除了线程池以外,还有许多与多线程相关的内容,本文主要介绍executors线程池。

线程池可以理解为在内存中放置许多线程,通过池管理器打开处理线程执行计划的空间。 如果存在线程任务,则可以从池中取出一个,在执行结束后将线程对象返回到线程池,从而避免由于重复创建线程对象而引起的性能开销。

Java5的线程池主要有5种。

第一个是newFixedThreadPool。 此线程池的大小必须是固定的,并且必须指定初始化时可以容纳的线程数。

示例代码和执行结果

以上是线程池的容量正好等于线程数的情况,但是如果线程池的容量小于参与的线程数,结果会怎么样? 从下图可以看出,

线程池的容量小于参与的线程数

如上图所示,newFixedThreadPool的参数指定了可以执行的最大线程数,不会执行超过该数的线程。 另外,还可以发现线程的执行顺序不受参与顺序的影响。

第二个是单任务线程池,newSingleThreadExecutor。 示例代码显示了该线程池的作用。

newSingleThreadExecutor

如上图所示,每次调用execute方法时,都会调用thread-1的run方法。

第三个是大小自动变化的线程池,newCachedThreadPool。

这个线程池和上述两个优点是,可以存储的线程数是可伸缩的,在以前构建的线程可用时被重用。 executorservicepool=executors.newcachedthreadpool (; 用上面的代码实现初始化。

第四个是延迟线程池,newScheduledThreadPool

newScheduledThreadPool

还有一个单任务延迟,newsinglethreadscheduledexecutor,类似于延迟线程池。

到目前为止,我们已经大致介绍了线程池的分类,接下来我们将对线程池的使用进行一些尝试。 我想和大家一起学习。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。