线程池,lambda表达式
Posted java学习每天一个知识点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池,lambda表达式相关的知识,希望对你有一定的参考价值。
线程池和lambda表达式
线程间通信
等待与唤醒机制
包子问题“:
线程池
用于存储多个线程的容器,容器中的线程不会销毁,避免了线程对象反复的创建和销毁、 使用: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表达式的主要内容,如果未能解决你的问题,请参考以下文章