Collectio和collections的区别?
collection是一个集合接口(单例集合),继承他的有List和Set
collections:是一个针对集合操作的工具类,主要帮助集合排序、查询、线程安全等。
List的三个自实现类的特点?
ArrayList:底层数据结构是数组查询快,增删慢,具有扩容性,线程不安全,不同步,执行效率高
linkedlist:底层数据结构是链表,查询慢,增删快,线程不安全,线程不同步,执行效率高
vector:底层数据结构是数组对象,查询快,增删慢,线程安全,执行效率不高
启动线程为什么是start()。而不是run()方法?
答:run方法调用相当于执行普通方法,而调用start方法是jvm去调用run方法启动线程,两个线程可以并发的执行(两个线程互相抢夺CPU执行权)。
final,finally,finalize之间的区别?
final 状态 修饰符 修饰的类不能被继承,修饰的方法不能被重写,修饰的成员变量,此时为常量
finally 捕获异常的使用
try…catch…fainally
finally里面去释放系统相关的资源(finally里面的代码一定会执行,除非特殊情况还没执行到finally时jvm退出)
finalize:object类中的一个方法,和垃圾回收器有关,当开启回收器的时候本质会调用finaize()来回收更多没有引用的对象
什么是进程?什么是线程?
进程:能够分配资源的基本单元,在程序执行的时候,创建线程
线程:执行过程的最小单元,一个进程可以包含多个线程,一个线程可以有多个线程组组成(多个线程执行具有随机性,抢夺CPU资源)
什么是静态代理?特点是什么!
静态代理是属于代理模式的一种(就是让第三方类给真实角色完成一些事情),代理角色完成当前类完成不了的事情当前类注重完成自己的事
特点:真实角色和代理角色都要实现同一个接口
sleep和wait方法的区别?
1、来源不同,sleep是Thread类的方法,wait是object类的方法。
2、是否会释放锁
sleep不会释放锁,在睡眠时间结束后,线程会重新恢复CPU争夺中
wait会释放锁,调用notify方法唤醒对方。
多线程实现方式的原理是什么?为什么会优于继承方式?
多线程实现方式,就是一个静态代理模式,Thread类就是代理角色。真实的类就是自定义的类实现Runnable,重写run方法,更能体现数据共享的原理
java中什么是等待唤醒机制?
就是当前类调用了wait方法,当前线程会进入阻塞状态,当另外一个类调用notify或notifyall时会唤醒当前类,然后该线程由阻塞状态变为就绪状态、