-
Java的三大特性
封装--->就是将类的信息隐藏在类的内部,不允许外部程序直接进行访问,而是通过该类的方法实现对隐藏信息的操作
继承--->就是类与类的一种关系,在Java中只能单继承,多实现
多态--->多态是指对象的多种形态,继承是显示多态的基础 -
面向对象的优势有哪些
易维护性---> 由于继承的存在,即使改变需求那么维护也是在局部的模块进行的,方便效率高
质量高--->在设计的时候可以重用现有的代码
易扩展--->多态的特性就可以提现出来Java代码的易扩展性 -
overrede和overload的区别
方法重写--->它的参数列表与返回值的类型必须与父类的方法保持一致,访问的权限不能低于父类该方法的权限
方法的重载--->方法名必须保持一致,参数列表中参数的顺序,个数,可以不同,与返回值无关 -
final finally finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
finally 异常处理语句结构的一部分,表示总是执行
finalze object类的一个方法,在垃圾回收器执行的时候回调用 -
==和equals的区别
equals是object的方法,==是运算符
==如果比较的是节基本数据类型,则比较的是值是否相等,如果比较的是引用数据类型,则比较的是地址值是否相同
equals用来比较两个对象的内容是否相等,不能用于基本数据类型 -
wait与sleep的区别
wait是object的方法,sleep是Thread的方法
wait在等待的时会释放锁资源,sleep在等待的时候回持有锁资源
wait通常用于线程间的交互,sleep通常被用于暂停执行 -
HashMap与HashTable的区别
HashMap是线程不安全的,HashTable是线程安全的
HashMap的效率要高于HashTable
HashMap是允许null值与null键的,HashTable不允许null值null键 -
对线程池的理解
降低资源消耗,通过重复利用已创建的线程降低线程的创建和销毁造成的消耗
提高响应速度,任务到达时,任务可以不需要等到线程创建就可以直接执行
提高线程的可管理性,可以统一的进行分配 调优和监控 -
什么时候造成线程死锁,遇到死锁怎么解决
死锁:指多个线程因竞争资源而造成的一种互相等待其他线程释放锁
资源的一种状态,如果无外力介入,这些进程将无法继续推进产生死锁的条件?
互斥条件:线程要求所分配的资源进行排他性控制,意思就是说,在某一个时间段内,资源仅为一个线程控制,此时若有其他的线程请求该资源,则线程请求只能等待
不剥夺的条件:就是线程所获得的资源在未使用完的情况下,不能被其他的线程夺走,意思就是说该线程所持有的资源只能由该线程自己释放(主动释放)
请求和保持的条件:线程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他的线程所以占有,此时请求的进程被阻塞,但对自己已经获得的资源保持不变
循环等待条件:存在一种资源的循环等待链,链中的每一个线程都持有资源,并由提出了对新资源的请求如何避免线程的死锁?
加锁顺序(线程按照一定的顺序加锁)
加锁时限(线程尝试取锁的时候加上一定的时限,超过时限就放弃对
该锁的请求,并释放自己占有的锁资源)
网友评论