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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天我们学习了JDK1.8的新特性,lambda表达式,等待唤醒机制和线程池,请根据自己的理解回答下面问题:
1.等待唤醒机制存在的意义是什么?
在多线程操作共享资源时, 通过等待唤醒机制可以实现线程间的有序通信

2.调用wait()方法和notify()方法,需要注意什么?
使用锁对象的wait方法后,线程进入无限等待状态,释放cpu和锁对象,且不再参与cpu与锁对象的抢占,直到有线程调用同一锁对象的notify方法;
调用notify方法后,会唤醒休眠时间最长的线程,若有多个线程休眠,调用notifyall方法唤醒全部线程

3.使用线程池来操作线程有什么好处?
可以节省下频繁创建线程与销毁线程的消耗,线程任务结束后会被归还到线程池,不会被销毁

4.传统的面向对象编码有什么弊端?
即使在需求很简单的情况下,传统面向对象编码也需要额外写许多代码,如类定义,重写方法等,显得较为笨重

5.什么情况下可以使用lambda表达式来替换面向对象编码?
lambda表达式使用前提:
1.当接口是函数式接口(即接口内只有一个抽象方法)时;
2.使用lambda必须具有上下文推断,即用于局部变量赋值时必须使用接口类变量接收lambda表达式,用于方法形参时接收lambda表达式的形参变量必须为接口类型

6.什么情况下lambda表达式可以简写?
1.当参数只有一个时,可以省略参数列表的括号;
2.当方法体只有一句时,可以省略{}、;、return语句,但若省略就必须同时省略
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马