java 线程池

为什么要使用线程池,先看看线程的有点:

1、降低资源消耗:通过复用已存在的线程,降低了线程创建和销毁造成的资源消耗

2、线程管理得到优化:线程池有效管理线程数量,资源统一调配,提供资源使用率。不会出现因过度创建线程资源耗尽而导致oom,从而提高系统的稳定性

3、简化了多线程的使用方法,降低了多线程的使用门槛。

4、使用线程池,可以使代码简单、优雅

java Executors 的四种线程池:

1、newCachedThreadPool

可缓存线程池:当有新任务提交时,有空闲线程就直接复用,没有空闲线程则创建新的线程来处理任务,队列中不储存任务,线程池不对大小做限制,线程池大小完全依赖于操作系统(理论上大小是Integer.MAX_VALUE)。如果线程空闲时间超过60s就会被回收。

2、newFixedThreadPool

指定大小的线程池:有新任务提交就创建一个新线程,当线程数量到设置的最大值时,再有提交新任务就会放入LinkedBlockingQueue 阻塞队列中,等到有空闲线程时,再从队列中取出任务继续执行。

3、newScheduledThreadPool

定长线程池:可指定线程池大小,支持定时及周期性任务

4、newSingleThreadExecutor

单线程线程池:只有一个线程,用仅有的一个线程来执行任务,保证所有任务按指定的顺序执行,新提交的所有任务会保存在LinkedBlockingQueue阻塞队列中,等待唯一的线程空闲后来执行

线程池的使用方法:(以newFixedThreadPool为例)

 //创建缓存线程池
 ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
 //创建定时调度线程池
 ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(10);
 // 创建单一线程的线程池
 ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
  // 创建固定大小的线程池
 ExecutorService threadPool = Executors.newFixedThreadPool(5);

 for (int i = 0; i < 10; i++) {
     threadPool.execute(new Runnable() {
         @Override
         public void run() {
            System.out.println("Thread name==" + Thread.currentThread().getName());
         }
     });
 }
threadPool.shutdown();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值