线程池,lambda表达式

Posted java学习每天一个知识点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池,lambda表达式相关的知识,希望对你有一定的参考价值。

 线程池和lambda表达式

  1. 线程间通信

  2. 等待与唤醒机制

  3. 包子问题“:

 

 

线程池

       用于存储多个线程的容器,容器中的线程不会销毁,避免了线程对象反复的创建和销毁、       使用:Executors

                     newFixedThreadPool

 

ExecutorService

       submit(Runnablerun)

 

Lambda表达式,jdk1.8后出来的函数编程方式

lambda表达式的标准格式:(参数)->{实现代码 }

()接口中抽象方法的参数列表,没有参数就空着

->参数传递给方法体

{}重写接口抽象方法的方法体

 

Arrays,Collections

为了排序, Arrays.sort 方法需要排序规则,即 Comparator 接口的实例,抽象方法 compare 是关键; 为了指定 compare 的方法体,不得不需要 Comparator 接口的实现类; 为了省去定义一个 ComparatorImpl 实现类的麻烦,不得不使用匿名内部类; 必须覆盖重写抽象 compare 方法,所以方法名称、方法参数、方法返回值不得不再写一遍,且不能写错; 实际上,只有参数和方法体才是关键。


在Lambda标准格式的基础上,使用省略写法的规则为: 1. 小括号内参数的类型可以省略; 2. 如果小括号内有且仅有一个参,则小括号可以省略; 3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分

Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意: 1. 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。 无论是JDK内置的 Runnable 、 Comparator 接口还是自定义的接口,只有当接口中的抽象方法存在且唯一 时,才可以使用Lambda。 2. 使用Lambda必须具有上下文推断。 也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。

 

                           


以上是关于线程池,lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

线程池和lambda表达式

Java之线程池和Lambda表达式

线程池 Lambda表达式 - 10

chapter19等待与唤醒案例线程池Lambda表达式

JAVA学习之等待与唤醒案例线程池Lambda表达式

4-5 《Java中多线程重点》——继承Thread实现Runnable死锁线程池Lambda表达式