java.util.concurrent - 线程池 ThreadPool

1、认识Executor(执行器)

Java线程池中的顶层接口,用来执行任务的,只包含一个方法execute(Runnable command)

2、ExecutorService

继承Executor接口,代表启动多个线程为用户提供服务,启动方法是submit(Runnable/Callable),返回对象是Future类型(该类代表线程执行后的返回值)

3、Callable,对Runnable进行了扩展,但不是Runnable的子接口

对Callable的调用,可以有返回值,并且可以抛出异常

4、ThreadPool – 线程池

         在Java中,线程池都实现了ExecutorService接口

         六个线程池(实际是五种)

         4.1 FixedThreadPool:固定容量的线程池,当容量减为0后,后加入的任务会等待,直到有线程释放出来

         4.2 CacheThreadPool:当线程池中的线程都得到任务执行后,再多出的任务,不会等待,而是由线程池在创建一个线程执行,并且线程池中线程默认60S没有执行任务,线程池会将该线程销毁

         4.3 SingleThreadPool:单一线程池,只有一个线程,与一个线程区别是其可以复用

         4.4 ScheduledThreadPool:有计划时间的线程,也可以说是定时的线程,4个参数,第一个Runnable是执行的任务,第二个initialDelay是第一个线程多久后执行,第三个参数period是隔多长时间执行下一个任务,第四个参数unit表示前两参数的时间单位

         4.5 WorkStealingPool:工作窃取,就是说该线程池中的每个线程都拥有自己的任务队列,当某个线程将自己的任务队列中的任务执行完后,会窃取别的线程队列中的任务进行执行。并且该线程池中的线程是后台线程(守护线程/精灵线程,daemon),主线程比进行阻塞式无法看到这些线程的标准输出。底层基于ForkJoinPool线程池

         4.6 ForkJoinPool:分叉-加入线程池,该线程池可以讲一个大任务划分成若干个小任务

其中两种:有返回值的(extends RecursiveTask<V>)、没有返回值(extends RecursiveAction)

5、线程池的七个参数(截于Java Platform Standard Edition 6 的 API 规范

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值