A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


今天我们学习了JDK1.8的新特性,lambda表达式,等待唤醒机制和线程池,请根据自己的理解回答下面问题:
1.等待唤醒机制存在的意义是什么?
可以更有效的完成多线程间通信的机制
2.调用wait()方法和notify()方法,需要注意什么?
要使用这两个方法,需要调用的是作为同步锁对象的方法,wait方法会释放掉锁,供其他线程使用,而notify唤醒后,要在下次进行抢断争取到同步锁后被唤醒的线程才会继续执行(否则会因为没有拿到同步锁而被阻塞)。同时要注意避免所有线程都被wait而出现了死锁。
3.使用线程池来操作线程有什么好处?
降低资源消耗,不需要频繁的创建和销毁线程对于一些简单的多线程任务,创建和销毁线程的资源消耗过大。
提高响应速度,提交到线程池的任务可以不用等待线程创建的时间而立刻开始执行。
提高了线程的客观理性,可以根据机器的承受能力设置线程数量,避免了可能因为创建了过多线程而导致服务器资源占用过多甚至死机的风险。
4.传统的面向对象编码有什么弊端?
语法过于复杂和冗长,为了实现某各个功能,不得不写了很多格式性质的并不需要关注的创建对象,匿名内部类等繁杂的代码。
5.什么情况下可以使用lambda表达式来替换面向对象编码?
当可以进行上下文推断(即作为局部变量和方法的参数)的函数式接口(即接口中只有一个抽象方法的时候)可以使用Lambda表达式来替换掉面向对象的编码。
6.什么情况下lambda表达式可以简写?
遵循“可推断即可省略”原则:
参数列表中的参数类型可以省略;
当只有一个参数的时候,小括号可以省略;
当代码块中有且只有一个语句的时候,可以省略大括号、return(与是否有返回值无关)、分号。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马