JAVA基础
文章平均质量分 93
java的基础知识
mt23
学习的路是勇于探索与思考,编程终点便是你是谁?世界从何而来?
展开
-
JAVA线程状态详解
Java中线程状态源码 java包位置:java.lang.Thread.State(Thread的内部枚举类) public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the原创 2021-05-11 17:48:25 · 116 阅读 · 0 评论 -
Java List对象转为对象中某个属性的List 并且互转
前言 经常会遇到将对象列表转换为对应的对象ID的列表,而且又讨厌写重复的代码。下面我们将用Jdk8的stream来实现这个功能 代码 最重要还是利用了stream的map函数 import lombok.Builder; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.List; import java.u原创 2020-08-25 16:20:35 · 5305 阅读 · 0 评论 -
JDK8u202之后,需要商业授权,但不限制个人和开发使用
JDK8u202(免费商用版) 可以理解,作为Oracle JDK的这个版本是最终的免费商用版.意味着我们在生成环境下使用更高的版本,需要获得商业授权. 使用方式 可以选择不升级,仅使用JDK8u202版本是可以的 可以选择获得商业授权 可以选择使用OpenJdk,对应的发行版还是挺多 常见的OpenJDK Dragonwell (阿里开源) AdoptOpenJDK Liberica Zulu Corretto OpenJ9 GraalVM 具体怎么选择也没有经验,可以自行比较 ...原创 2020-07-16 11:09:11 · 6730 阅读 · 0 评论 -
JDK1.8 ConcurrentHashMap computeIfAbsent 嵌套的死锁bug
偶然间看到了这个bug,记录一下 Bug信息 版本 JDK1.8(目前测试到8u261仍然有这个问题)(是不是有且仅有这个版本还不定),至少可以肯定的是在1.9已经修复 场景 ConcurrentHashMap 中computeIfAbsent 的再嵌套computeIfAbsent/putIfAbsent 现象 线程死锁 代码 public class CHMTest { public static void main(String[] args) { normal();原创 2020-07-16 10:51:46 · 1413 阅读 · 0 评论 -
完全理解synchronized关键字的深入用法,对象、类、字符串锁、字节码
synchronized关键字的作用 Java中的关键字synchronized的作用应该都明白,在并发编程中经常使用,是JVM级的锁实现,这里就不做过多说明。它的用法是提供一个key来使代码块互斥的被多个线程执行。笔者这里的说法可能和常规说法有点不同。因为我用了一个key的概念。笔者认为,它的底层实现就是一个key。哪个线程竞争到了key,就能开锁进入被锁住的代码块中执行,否则将无限等待下去。 ...原创 2020-05-07 23:14:18 · 544 阅读 · 1 评论 -
JAVA用Optional工具类处理NEP(NullointerException)的总结
关于如何对待NPE(NullPointerException)问题 关于如何处理NPE问题,我至今没有定论.仅说说自己浅薄的看法 JAVA的Optional工具类非常方便的处理NPE,但处理NPE不是代码的问题,是对业务设计规范的问题 如果不了解Optional可以去查询一下.Optional类的代码非常简洁,但它的设计逻辑非常棒 情况1:对象为空时,需要给它默认值 Integer a = nul...原创 2020-04-27 09:34:09 · 419 阅读 · 0 评论 -
java String字符串赋值及常量池原理、StringBuilder、StringBuffer
String字符串赋值及常量池原理 String简介 String设计为不可变类主要考虑到:效率和安全。 String常量池 由于String的不可变性,为了提高操作效率,所以设计常量池。从1.8开始,String常量池被放在了堆中,在1.8之前存放在方法区的运行时常量池。 String a = "a"做了什么 String a = "a" 这段代码首先 "a" 此字符串叫字符面值。在编译时,c...原创 2019-12-12 15:18:31 · 824 阅读 · 0 评论 -
java基础中==,equals(),Objects.equals()详细区别与细节
java中==的含义 ==的基本解释 ==是二元运算符,其最终的结果返回的是基本数据类型中的boolean型。它是比较基本数据类型和引用数据类型,它的作用是比较两个变量是否相等,但对相等的定义我们应该达成一致。 情况一,基本数据类型之间比较 byte,short,char,int,long,float,double,boolean 他们之间的比较,比较的是他们的值。在比较它们值时,可能存在变...原创 2019-12-10 14:54:23 · 1102 阅读 · 0 评论