线程池与Lambda表达式

本文介绍了Java中的线程池,包括缓存线程池、定长线程池、单线程线程池和周期性任务定长线程池的工作原理,并通过实例展示了它们的执行流程。同时,文章还探讨了Lambda表达式在函数式编程中的作用,提供了一个简洁的Lambda表达式示例。
摘要由CSDN通过智能技术生成

一个线程执行任务的完整流程是:

  1. 创建线程
  2. 创建任务
  3. 执行任务
  4. 关闭线程

这个流程中创建线程和关闭线程耗费的时间在90%,而我们有时候创建线程就是为了执行一个很小的任务,这就会导致效率很低。

而线程池就是一个容纳多个线程的容器,池中的线程可以反复的使用,省去了频繁创建和销毁线程的时间。

线程池分为定长和非定常线程池,线程池的结构可以看作是数组形式,每个下标放一个线程。

四种线程池

Java中有四种线程池:

  • 缓存线程池:
  • 定长线程池:
  • 单线程线程池:
  • 周期性任务定长线程池:

对获取以上四种线程池的对象,用的都是:ExecutorService 对象名 = Executors.newCachedThreadPool( ) ;

缓存线程池:

缓存线程池 (长度无限制)
执行流程:

  1. 判断线程池是否存在空闲线程
  2. 存在则使用
  3. 不存在,则创建线程 并放入线程池, 然后使用

ExecutorService service = Executors.newCachedThreadPool();
//向线程池中 加入 新的任务
service.execute(new Runnable() {
   
    @Override
    public void run() {
   
    	System.out.println("线程的名称:"+Thread.currentThread().getName());
    }
});
service.execute(new Runnable() {
   
    @Override
    public void run() {
   
   		System.out.println("线程的名称:"+Thread.currentThread().getName());
    }
});
service.execute(new Runnable() {
   
    @Override
    public void run() {
   
		System.out.println("线程的名称:"+Thread.currentThread().getName());
}
});

举例:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值