线程池、Lambda

线程通信概念

等待唤醒机制

       public void wait():无限等待

       public void wait(long):定时等待

       public void notify():通知一个人结束等待

       public void notifyAll():通知所有人结束等待

       单生产者单消费者:notify + if/while

       多生产者多消费者:notifyAll + while

 

Java中线程池运行原理

       有限的线程重复利用,通过队列去执行多个任务。

 

函数式编程相对于面向对象的优点

       函数式编程的优点:简单、直观,没有面向对象那么复杂的语法。

      

Lambda表达式的标准格式

       1. 一些参数

       2. 一个箭头

       3. 一些代码

       格式:(参数) -> {方法体}

 

Lambda标准格式Runnable与Comparator接口

       new Thread(() -> { System.out.println("abc"); }).start();

       Arrays.sort(array, (Person a, Person b) -> { return a.getAge() – b.getAge(); })

 

Lambda表达式的省略格式与规则

       接口名称可以省略不写

       唯一的抽象方法名称省略不写

       参数的类型可以省略不写

       如果参数有且仅有一个,那么()可以省略不写

       如果方法体语句有且仅有一个,那么无论有没有返回值,return、分号、{}。

 

Lambda省略格式Runnable与Comparator接口

       new Thread(() -> System.out.println("abc")).start();

       Arrays.sort(array, (a, b) -> a.getAge() – b.getAge())

 

Lambda的两项前提

       1. 必须有接口,而且其中有且仅有一个需要实现的抽象方法。

       2. 必须有上下文推导。(要么左边接收是个接口,要么参数传参是个接口。)

发表评论