邯郸网站建设哪能做,北京php网站建设,网站开发设计师培训,网站建设及政务公开工作synchronized 和 ReentrantLock 区别是什么#xff1f; synchronized 早期的实现比较低效#xff0c;对比 ReentrantLock#xff0c;大多数场景性能都相差较大#xff0c;但是在 Java 6 中对 synchronized 进行了非常多的改进。
主要区别如下#xff1a;
ReentrantLock …synchronized 和 ReentrantLock 区别是什么 synchronized 早期的实现比较低效对比 ReentrantLock大多数场景性能都相差较大但是在 Java 6 中对 synchronized 进行了非常多的改进。
主要区别如下
ReentrantLock 使用起来比较灵活但是必须有释放锁的配合动作 ReentrantLock 必须手动获取与释放锁而 synchronized 不需要手动释放和开启锁 ReentrantLock 只适用于代码块锁而 synchronized 可用于修饰方法、代码块等。 56. 说一下 atomic 的原理 atomic 主要利用 CAS (Compare And Wwap) 和 volatile 和 native 方法来保证原子操作从而避免 synchronized 的高开销执行效率大为提升。
反射 57. 什么是反射 反射是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法对于任意一个对象都能够调用它的任意一个方法和属性这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。
58. 什么是 Java 序列化什么情况下需要序列化 Java 序列化是为了保存各种对象在内存中的状态并且可以把保存的对象状态再读出来。
以下情况需要使用 Java 序列化
想把的内存中的对象状态保存到一个文件中或者数据库中时候 想用套接字在网络上传送对象的时候 想通过RMI远程方法调用传输对象的时候。 59. 动态代理是什么有哪些应用 动态代理是运行时动态生成代理类。
动态代理的应用有 spring aop、hibernate 数据查询、测试框架的后端 mock、rpcJava注解对象获取等。
60. 怎么实现动态代理 JDK 原生动态代理和 cglib 动态代理。JDK 原生动态代理是基于接口实现的而 cglib 是基于继承当前类的子类实现的。
对象拷贝 61. 为什么要使用克隆 克隆的对象可能包含一些已经修改过的属性而 new 出来的对象的属性都还是初始化时候的值所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。
62. 如何实现对象克隆 实现 Cloneable 接口并重写 Object 类中的 clone() 方法。 实现 Serializable 接口通过对象的序列化和反序列化实现克隆可以实现真正的深度克隆。 63. 深拷贝和浅拷贝区别是什么 浅克隆当对象被复制时只复制它本身和其中包含的值类型的成员变量而引用类型的成员对象并没有复制。 深克隆除了对象本身被复制外对象所包含的所有成员变量也将复制。 Java Web 64. JSP 和 servlet 有什么区别 JSP 是 servlet 技术的扩展本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于servlet 的应用逻辑是在 Java 文件中并且完全从表示层中的 html 里分离开来而 JSP 的情况是 Java 和 html 可以组合成一个扩展名为 JSP 的文件。JSP 侧重于视图servlet 主要用于控制逻辑。