java stream api熟悉和理解

前言

stream api和lambda表达式都是java8出来的,都可以简化代码,也经常会配合着使用。
对于上边的说法,网上是这么说的,但是我自己写的时候,总觉得好像有的时候确实简洁很多,但也有时候似乎反而更麻烦。
所以,根据我目前的理解,我觉得可能它有它的适用场景,但并不能说用它就一定好,但是以后会不会改变这种看法也很难说。
就我目前的了解,stream api主要用在对list集合及数组的操作,最大的优势在于各种中间操作。
stream api是把集合等数据转化成stream,然后提供了一系列的api,尤其是很多返回stram的中间操作api。
单纯的描述可能不好理解,下边是一些基础的示例和对比。

继续阅读全文 »

lambda表达式基础

前言

早在JAVA8出来的时候,我实际就已经了解过一点点lambda表达式和stream流,但是由于写惯了原来的那种风格,再加上当时的项目中也没有什么人使用,所以只是一扫而过,没有深入了解,也没有进行任何的练习,甚至还有那么一点抵触,觉得lambda读起来太不好懂。

继续阅读全文 »

java基础之多线程总结二(CAS和各种常用锁)

CAS

在java中,对很多常见的需要加锁的操作进行了封装,例如Atomic开头的一些类,这些类是线程安全的,但是内部却不是用synchronized加锁实现,而是CAS。
例如AtomicInteger的’incrementAndGet()’方法最终调用的实际是下边这个方法

1
2
3
4
@HotSpotIntrinsicCandidate
public final native boolean compareAndSetInt(Object o, long offset,
int expected,
int x);

继续阅读全文 »

时隔九月再起航

时间过得真快,不知不觉间来广州已经四个多月了,已经超过了上一份工作的时间,算是初步稳定了下来。
回头望去,从去年十一月份离开上上一份工作到现在,九个多月的时间,换了两份工作,很多的经历惶惶然还像是在做梦一样。
这种种的经历,也一步步验证着那些耳熟能详的道理,比如心急吃不了热豆腐,比如塞翁失马焉知非福。

继续阅读全文 »