JDK源码
文章平均质量分 51
露落梨花
联系加Q群:1009837046
展开
-
Java8的stream的注意问题:数组转流,类型问题
一、数组的转流的问题public static void arrTest() { int[] arr = {1, 2, 3, 4, 5}; Arrays.stream(arr).map(x -> x+"").toArray(); Stream.of(1, 2, 3, 4, 5).map(x -> x+"").toArray(); }使用Arrays.stream 转为流时,基础数据类型会被转成对应的流对象。而不是我们常用的Stea原创 2022-05-17 18:41:04 · 1043 阅读 · 0 评论 -
java集合之List线程安全性比较总结
目录一、背景二、测试三、详解四、总结一、背景 在多线程中使用集合list时,会有线程不安全的问题。所以调研了所有的list线程安全的集合,同时使用简单的测试,测试出相对应的性能。线程安全的list:List<Integer> vector = new Vector<>();List<Integer> listSyn = Collections.synchronizedList(new ArrayList<...原创 2021-10-23 21:04:43 · 16806 阅读 · 1 评论 -
java的String类型排序,字符串比较大小
一、使用方式public static void compare() { String a = "a"; String b = "b"; int result = a.compareTo(b); // -1 System.out.println(result); }二、原理查看string类型的源码,String这个类继承了Comparable这个类,同时实现了compareTo这个方法。所以可以使用这原创 2021-08-04 19:12:46 · 5567 阅读 · 0 评论 -
基于cache line的Java代码优化
一、cache line概念在计算机的内部,数据的存储基本都是有三级缓存的。最靠近CPU的存储组件是寄存器,cpu需要的数据以及指令集都是暂时放在寄存器中。当需要磁盘中的数据时就会通过缓存,一级一级的访问,而访问的最小单元就是cache line,cache line的大小是64字节。也就是说cache每次运输数据,会运输64个字节大小的数据。二、测试当只有一个属性x时,两个线程操作的数据(X,Y)会放在同一个cache line里面,而关键字volatile又是线程可见,当其中一个线程改变原创 2021-03-25 21:52:26 · 251 阅读 · 0 评论 -
jdk8的源码查看之--Map、(computeIfPresent、compute、computeIfAbsent、merge)
目录一、背景二、方法1.forEach()2.replaceAll()3.putIfAbsent()4.computeIfAbsent()5.computeIfPresent()6.compute()7.merge()三、实现类一、背景二、方法1.forEach()default void forEach(BiConsumer<? super K, ? super V> action) { Objects.requireN原创 2020-10-12 16:35:04 · 418 阅读 · 0 评论