Java线程池 ThreadPoolExecutor 参数及基本使用

先来看一个最基本的多线程创建和启动:

class SomeThead extends Thraad   {
   
public void run()   {
       
//do something here
   
}
}


public static void main(String[] args){
    SomeThread oneThread =
new SomeThread();
   
oneThread.start();
}

实现Runnable的方法大同小异,就不写了。

这样会带来几个问题:

  1. 使用线程的时候就去创建一个线程如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率。
  2. 线程能共享系统资源,如果同时执行的线程过多,就有可能导致系统资源不足而产生阻塞的情况。
  3. 不能对线程进行简单的管理等。

 

针对这些问题, Java中开辟出了一种管理线程的概念,这个概念叫做线程池,从概念以及应用场景中,我们可以看出,线程池的好处,就是可以方便的管理线程,也可以减少内存的消耗。

 

那么,我们应该如何创建一个线程池呢?

Java中已经提供了创建线程池的一个类:Executor

 

而我们创建时,一般使用它的子类:ThreadPoolExecutor.

 

对线程池的配置,就是对ThreadPoolExecutor构造函数的参数的配置,先来看所提供的四个构造函数

 

五个参数的构造器:

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue)

 

六个参数:

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory)

六个参数:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值