0%

1.8的新特性有了解过吗? (注意了解其他版本新特征) +JDK更新认识

· Lambda表达式

· 函数式接口 函数式编程

· 方法引用和构造器调用

· Stream API

· 接口中的默认方法和静态方法

· 新时间日期API

新的日期类

阅读全文 »

Java中重写和重载的区别?

联系: 名字相似 都是多个同名方法

重载 在同一个类之中发生的

重写 继承中,子类重写父类方法

1 目的差别

2 语法差别

怎样声明一个类不会被继承,什么场景下会用?

final修饰的类不能有子类 大部分都是出于安全考虑

String举例

阅读全文 »

Java中的自增是线程安全的吗,如何实现线程安全的自增?

i++ ++i

增加synchronized进行线程同步

使用lock、unlock处理Reetrantent 锁进行锁定

AtomicInteger >>> Unsafe >>> cas >>> aba

首先说明,此处 AtomicInteger,一个提供原子操作的 Integer 的类,常见的还有AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference 等,他们的实现原理相同,区别在与运算对象类型的不同。令人兴奋地,还可以通过 AtomicReference将一个对象的所有操作转化成原子操作。

我们知道,在多线程程序中,诸如++i 或 i++等运算不具有原子性,是不安全的线程操作之一。通常我们会使用 synchronized 将该操作变成一个原子操作,但 JVM 为此类操作特意提供了一些同步类,使得使用更方便,且使程序运行效率变得更高。通过相关资料显示,通常AtomicInteger 的性能是 ReentantLock 的好几倍。

Java的代理有几种实现方式?

动态代理

JDK >>> Proxy

​ 1 面向接口的动态代理 代理一个对象去增强面向某个接口中定义的方法

​ 2 没有接口不可用

​ 3 只能读取到接口上的一些注解

阅读全文 »