JAVA8
Silently9527
公众号:贝塔学JAVA
展开
-
从零开始学习Java8 Stream,看这篇就够了
为何需要引入流在我们平常的开发中几乎每天都会有到List、Map等集合API,若是问Java什么API使用最多,我想也应该是集合了。举例:假如我有个集合List,里面元素有1,7,3,8,2,4,9,需要找出里面大于5的元素,具体实现代码:public List<Integer> getGt5Data() { List<Integer> data = Arrays.asList(1, 7, 3, 8, 2, 4, 9); List<Integer>..原创 2020-12-16 07:34:42 · 229 阅读 · 0 评论 -
如何高效的使用并行流
在Java7之前想要并行处理大量数据是很困难的,首先把数据拆分成很多个部分,然后把这这些子部分放入到每个线程中去执行计算逻辑,最后在把每个线程返回的计算结果进行合并操作;在Java7中提供了一个处理大数据的fork/join框架,屏蔽掉了线程之间交互的处理,更加专注于数据的处理。Fork/Join框架Fork/Join框架采用的是思想就是分而治之,把大的任务拆分成小的任务,然后放入到独立的线程中去计算,同时为了最大限度的利用多核CPU,采用了一个种工作窃取的算法来运行任务,也就是说当某个线程处理完自己原创 2020-11-30 10:08:01 · 310 阅读 · 2 评论 -
面试者必看:Java8中的默认方法
背景在Java8之前,定义在接口中的所有方法都需要在接口实现类中提供一个实现,如果接口的提供者需要升级接口,添加新的方法,那么所有的实现类都需要把这个新增的方法实现一遍,如果说所有的实现类能够自己控制的话,那么还能接受,但是现实情况是实现类可能不受自己控制。比如说Java中的集合框架中的List接口添加一个方法,那么Apache Commons这种框架就会很难受,必须修改所有实现了List的实现类现在的接口有哪些不便向已经发布的接口中添加新的方法是问题的根源,一旦接口发生变化,接口的实现者都需要.原创 2020-11-26 06:48:20 · 153 阅读 · 0 评论 -
CompletableFuture让你的代码免受阻塞之苦
前言现在大部分的CPU都是多核,我们都知道想要提升我们应用程序的运行效率,就必须得充分利用多核CPU的计算能力;Java早已经为我们提供了多线程的API,但是实现方式略微麻烦,今天我们就来看看Java8在这方面提供的改善。假设场景现在你需要为在线教育平台提供一个查询用户详情的API,该接口需要返回用户的基本信息,标签信息,这两个信息存放在不同位置,需要远程调用来获取这两个信息;为了模拟远程调用,我们需要在代码里面延迟 1s;public interface RemoteLoader {原创 2020-11-22 16:02:45 · 4907 阅读 · 0 评论 -
Java中NullPointerException的完美解决方案
null在Java中带来的麻烦我相信所有的Java程序猿一定都遇到过NullPointerException,空指针在Java程序中是最常见的,也是最烦人的;它让我们很多程序猿产生了根深蒂固的感觉,所有可能产生空指针的地方都的加上if-else检查,但是这带给我们很多麻烦Java本身是强类型的,但是null破坏了这个规则,它可以被赋值给任何对象Java的设计是让程序猿对指针无感知,但是null指针是个例外它会是代码变得很臃肿,到处都充斥着if-else的空检查,甚至是多层嵌套,代码可读性下降n.原创 2020-11-18 11:10:50 · 1189 阅读 · 0 评论 -
Java8为什么需要引入新的日期和时间库
Java8为什么需要引入新的日期和时间库Date日期输出可读性较差Date date = new Date();System.out.println(date);打印输出的结果:Sat Nov 14 11:03:41 CST 2020Date日期的解析、格式化通过JDK自带的api实现较为麻烦,通常会使用第三方的日期时间库,比如:joda-time, commons-langJava8中提供了哪些日期和时间类在java.time包中提供了很多新的类,通常主要使用到的是LocalDa.原创 2020-11-14 21:17:34 · 221 阅读 · 0 评论