1.等待唤醒机制存在的意义是什么?
为了避免线程安全问题,这个机制使有相互协作关系的多个线程在对一个共享数据进行操作时,不是同时间处理,而是等一个完成后再交还CPU,让一个任务执行
2.调用wait()方法和notify()方法,需要注意什么?
(1)wait方法与notify方法必须要由同一个锁对象调用.因为:对应的锁对象可以通过notify唤醒使用同一个锁对象的wait后的线程.
(2)wait方法与notify方法是舒勇Object类的方法的.因为:锁对象可以是任意对象,而任意对象的所属类都是继承了Object的.
(3)wait方法与notify方法必须要在同步代码块或者同步函数中使用.因为:必须要通过锁对象调用者两个方法.
3.使用线程池来操作线程有什么好处?
(1)降低资源消耗.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可以执行多个任务.
(2)提高响应速度.当任务到达时,任务可以不需要的等到线程创建就能立即执行.
(3)提高线程的可管理性.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)
4.传统的面向对象编码有什么弊端?
传统的面向对象编码过分强调“必须通过对象的形式来做事情”,过分重视了对象的过程和格式,导致代码冗余,不利于突出真正体现业务逻辑的代码。
5.什么情况下可以使用lambda表达式来替换面向对象编码?
(1) 必须有函数式接口——只包含一个抽象方法的接口
(2)必须有上下文引用(必须有接口作为数据类型接收)
6.什么情况下lambda表达式可以简写?
(1)小括号内参数的类型可以省略;
(2)如果小括号内有且仅有一个参,则小括号可以省略;
(3)如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号,retur关键字及语句分号, |