吴香斌
1.等待唤醒机制存在的意义是什么?
提升线程间的通信效率,通过等待唤醒机制能够对线性进行更有序的管理.
2.调用wait()方法和notify()方法,需要注意什么?
wait()方法需要由同步锁对象来进行调用.调用wait()时,会出现编译错误,需要使用try..catch进行InterruptException异常捕获. 被wait方法作用的线程将会进入无线等待,只能通过其他的同步线程来进行唤醒.
notify()方法是Object下的方法,是对同步线程中的任意一个无线等待或是计时等待的线程进行唤醒. 无线等待被唤醒后会进入Block状态进行锁的抢夺. 计时等待被唤醒后会进行Runnable状态,等待CPU时间碎片的分配.
3.使用线程池来操作线程有什么好处?
线程池是多个线程的容器,里面的线程可以重复使用,新的线程任务以队列的模式进行线程的获取. 减少了创建线程的次数以及内存空间的占用.
4.传统的面向对象编码有什么弊端?
传统的面对对象编码,是先要创建一个对象工具,通过对象来进行功能的实现. 基本思想是 通过什么形式来做什么,有一个创建形式的过程,这个过程比较复杂.
以使用线程为例: 传统的面向对象的方式,是通过实现接口或者是继承Thread类的方式,重写run()方法,然后再启动线程. 其实真正要做的事情只是运行run()方法中的方法体, 前面的步骤都是按照面向对象的思想,创建的格式,程序相对复杂.
5.什么情况下可以使用lambda表达式来替换面向对象编码?
1)当对象接口是有且仅有一个抽象方法时,可以使用Lambda表达式
2)当Lambda表达式时作为方法的参数或者是局部变量的值时,可以进行使用.
6.什么情况下lambda表达式可以简写?
1)小括号中的参数类型可以进行省略
2)当小括号中参数列表只有一个参数时,小括号可以进行省略
3)当大括号中只有一句表达式时,可以省略大括号和分号,如果有return还可以省略return
|