线程通信概念
概念:多个线程处理同一个资源,但是处理动作(线程任务)不同。
等待唤醒机制
就是线程之间互相协作并且相互竞争的一种关系。
public void wait():释放锁,无限等待。
public void wait(long time):释放锁,定时等待。
public void notify():不会释放锁,通知随机一个人结束等待。
public void notifyAll():不会释放锁,通知所有人结束等待。
单生产者-单消费者:wait() / notify() / if或者while判断都行。
多生产者-多消费者:wait() / notifyAll() / 必须是while不能是if。
Java中线程池运行原理
线程池:线程池其实就是可以容纳多个线程的容器,其中线程可以反复使用,省去了创建线程对象的操作,无需反复创建线程浪费资源。
函数式编程相对于面向对象的优点
更简单,更直接,抛弃了面向对象复杂的语法,代码更加清晰。
Lambda表达式的标准格式
Lambda表达式由三个部分组成:
1,一些参数。
2,一个箭头。
3,一段代码
(参数类型 参数名称)-> {代码语句}
Lambda标准格式使用Runnable与Comparator接口
Thread(()->{System.out.println("多线程任务执行!")};).start();
Arrays.sort(array,(Person a,Person b)->{return a.getAge() ‐ b.getAge();});
Lambda表达式的省略格式与规则
规则:
1.接口名称可以省略
2.方法名称可以省略
3.小括号中的参数类型可以省略。
4.如果小括号中有且仅有一个参数,小括号可以省略。
5.如果大括号内有且仅有一个语句,无论是否有返回值,都可以省略大括号,return及语句分号。
Lambda省略格式使用Runnable与Comparator接口
Thread(()->System.out.println("多线程任务执行!")).start();
Arrays.sort(array,( a,b)-> a.getAge() ‐ b.getAge(););
Lambda的省略格式使用自定义的接口(有且仅有一个抽象方法)
Lambda的两项使用前提
1,使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。
2,必须要有上线文推导。