本帖最后由 苏阿合 于 2018-12-27 21:26 编辑
1.等待唤醒机制存在的意义是什么? 可以实现多线程之间的通讯,让多个线程共同处理同个资源,有效合理的利用资源。 2.调用wait()方法和notify()方法,需要注意什么? 注意: (1)调用wait()方法和nitify()锁对象要是同一个 (2)同步代码块的锁对象要同一个 (3)调用wait()方法和notify()方法要在synchronized同步代码块中 (4)wait()方法和notify方法都是属于Object类中的方法,所以它的锁对象可以是任意对象 3.使用线程池来操作线程有什么好处? (1)cpu:降低了资源消耗。减少了线程的创建和销毁次数,每个线程还可以重复的利用 (2)用户:提高了响应速度。当有线程任务时,可以不用创建线程,可以调用线程池中的线程执行线程任务 (3)程序员:提高了线程的可管理性。可根据使用的系统承受能力,中调整线程池中线程数,避免应线程创建过多,而导致系统内存溢出 4.传统的面向对象编码有什么弊端? 代码过多,语法太复杂 (1)需要编写实现类 (2)需要重写方法 (3)创建对象 5.什么情况下可以使用lambda表达式来替换面向对象编码? (1)必须有函数式接口(接口中只有唯一一个抽象方法) (2)必须接口上下文关系(有接口类型作为变量类型或参数列表数据类型,接收的一定是一个接口的实现类 6.什么情况下lambda表达式可以简写? 原理:可推导可省略 (1)当接口的参数列表有两个变量参数是,参数的数据类型可以省略 (int a ,int b)—>(a,b) (2)当接口的参数列表只有一个变量参数,小括号和数据类型可以省略(int a )->a (3)如果Lambda表达式中的方法执行语句只有一句的话,大括号,return,分号可以省略 {return a+b;}—>a+b 注意:要么三个要一起省略,要么三个一起不省略,不能省略一部分
|