java+stream+源码分析_java8学习之Stream源码分析
上一次已經將Collectors類中的各種系統收集器的源代碼進行了完整的學習,而在之前咱們已經花了大量的篇幅對其Stream進行了詳細的示例學習,如:
那接下來則通過源代碼的角度來對Stream的運作原理進行深入的學習,比如:Stream里面提供了這么多方法都是如何實現的?串行流與并行流又是如何調用的?對于并行流它又是如何利用ForkJoin這樣的一個框架進行任務的切割和合并的?下面開始:
首先找開Stream類的源代碼,先看一下它的定義:
而它是繼承了BaseStream,如下:
所以,先來瞅一下BaseStream長啥樣:
又繼承了AutoCloseable,那不又進去瞅下它唄~
那它是干嘛的呢?從名字上來看是"自動關閉",可以看一下這個接口就提供了一個唯一的關閉方法,如下:
接著看一下這個接口的javadoc:
那最終是表達一個什么意思呢?其實這是JDK1.7給咱們提供的一個簡化代碼的一個特性,比如說:對于文件流的操作,我們通常的做法是try里面打開,如果異常了則在catch中進行處理,使用完之后再到finally塊中將打開的流給關閉掉,但是!!!這種傳統的方式會有一個這樣的缺陷,就是說使用者在打開流的時候可能會忘了最終將它關閉掉而造成資源上的浪費,而流如果未關的話是不會報錯的,這樣資源就被一直占據住了,而當這種情況越來越多的話則就會造成資源的耗盡最終造成崩潰異常,所以這個接口的推出也就是為了幫我們解決這個問題的,說起來還是有些抽象,下面用代碼來說明一下:
接著來應用一下:
接下來運行看下結果:
那這個close()方法何時才被調用的呢?實際上是將try的代碼塊執行完之后就會自動調用close()方法,所以以后對于這種使用了某種操作之后需要將其資源關閉的功能可以嘗試采用這個新的特性,讓我們的代碼變得更加的簡單而出錯率更少。
總結
以上是生活随笔為你收集整理的java+stream+源码分析_java8学习之Stream源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 航空购票系统源码java_航空售票系统
- 下一篇: java可存储100个整数的数组_定义一