1.等待唤醒机制存在的意义是什么?
多个线程在处理同一个资源,并且任务不同时,通过等待唤醒机制,使多个线程在操作同一份数据时避免了对同一共享变量的争夺,从而使各个线程能有效的利用资源.
2.调用wait()方法和notify()方法,需要注意什么?
1,wait()方法与notify()方法必须要由同一个锁对象调用,因为:对应的锁对象 可以通过notify唤醒使用同一个锁对象调用的wait方法??
2,wait()方法与notify()方法是属于Object类的方法
3,wait()方法与notify()方法必须要在同步代码块或者同步函数中使用
3.使用线程池来操作线程有什么好处?
1,降低资源的消耗
2,提高响应速度
3,提高线程的可管理性. 可根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下
4.传统的面向对象编码有什么弊端?
1,为了指定run的方法体,不得不需要runnable接的实现类
2为了省去定义一个runnableImpl实现类的麻烦,不得不使用内部匿名类
3,必须覆盖重写run方法,所以方法名称,方法参数,方法返回值不得不再写一遍,且不能写错
5.什么情况下可以使用lambda表达式来替换面向对象编码?
1,使用lambda必须具有接口,且接口中有且只有一个抽象方法,无论是JDK内置的runnable,comparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才能使用lambda
2,使用lambda必须具有上下文推断
也就是方法的参数或者局部变量类型必须为lambda对应的接口类型,才能使用lambda作为该接口的实例
6.什么情况下lambda表达式可以简写?
1,小括号内参数的类型可以省略
2,如果小括号有且只有一个参数,则小括号可以省略
3,如果大括号有且仅有一个语句,则无论是否有返回值,都可以省略大括号,return关键字及语句分号 |