1、JDK 17 在 2021 年 9 月 14 号正式发布了!根据发布的规划,这次发布的 JDK 17 是一个长期维护的版本(LTS)。SpingFramework 6 和SpringBoot 3中默认将使用JDK 17,所以JDK 17必将是使用较广泛的版本; 而从上个LTS版本JDK11到JDK17有哪些重要特性需要掌握呢?本文帮助你梳理Java 11 升Java 17 重要特性。
2、这里帮你梳理为何JDK 17将会是一个极为重要的版本以及如何去理解它。
3、JDK设计者建议使用Integer a = 10或者Integer.valueOf()函数,而不是new Integer(),让其抛出告警?
在构造函数上都已经标记有@Deprecated(since=“9”, forRemoval = true)注解,这就意味着其构造函数在将来会被删除,不应该在程序中继续使用诸如new Integer(); 如果继续使用,编译期将会产生’Integer(int)’ is deprecated and marked for removal 告警。
4、在并发环境下,Integer 对象根本无法通过 Synchronized 来保证线程安全,让其抛出告警?
由于JDK中对@jdk.internal.ValueBased注解加入了基于值的类的告警,所以继续在 Synchronized 同步块中使用值类型,将会在编译期和运行期产生警告,甚至是异常。
public void inc(Integer count) {
for (int i = 0; i < 10; i++) {
new Thread(() -> {
synchronized (count) { // 这里会产生编译告警
count++;
}
}).start();
}
}