线程池与Lambda表达式

等待唤醒机制

计时等待(Timed Waiting)

  • 调用静态的sleep(long millis)方法,可用于单线程。
  • 与锁无关,线性睡眠到期自动苏醒,返回到Runnable(可运行)或阻塞状态。
  • 锁阻塞状态(Blocked)为某个线程争夺CPU执行权的过程,,成功后可运行。

无限等待(Waiting)

  • 拥有对象监视器的线程在调用waiting()方法后进入无限等待状态,直到其他在该锁对象上的线程调用notify()方法将其唤醒。两者均为Object类方法。

  • wait(long m)sleep(long millis)方法,但其可在睡眠结束前被唤醒。

  • notifyAll()方法可唤醒在当前对象监视器上等待的所有线程。

  • 等待和唤醒的线程只有一个能执行,因此需要使用同步。


线程池

概述:存放线程的容器,本质上为一个LinkedList<Thread>集合。其中的线程可以反复使用,以免反复创建线程而消耗资源。

使用步骤:

  • 使用线程池的工厂类Executors中的静态方法static ExecutorService newFixedThreadPool(int nThreads)生产一个指定线程数量的线程池。返回值即一个线程池接口的实现类对象。
  • 创建一个类实现Runnable接口,设置线程任务。
  • 调用ExecutorService线程池接口中的submit(Runnable task)方法传递线程任务即实现类,执行run方法。
  • 可调用ExecutorService中的shutdown()方法销毁线程池(不建议)。

Lambda表达式

概述:简化匿名内部类的书写方法,不重视过程只看结果(即执行重写的方法体)。

使用前提:

  1. 必须具有接口,且其中只能有一个抽象方法。(函数式接口)
  2. 必须能够通过上下文推断。

格式:

(参数列表)->{重写的方法体}

注意:

  • 小括号内无参数则留空,参数类型可省略。
  • 若仅有一个参数,则小括号可省略。
  • 若大括号内只有一个语句,则可以同时省略(大括号,return关键字,分号)。必须一起省略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值