原创 Java中的時間和日期處理

本文主要講解Java 8的時間處理方式和Java8之前版本的時間處理方式的區別。筆者將Java8之前的jdk版本統稱爲舊版本。一、日期處理舊版本Date在Java 1.0中,對日期和時間的支持只能依賴java.util.Date類。它在易用

原创 線程安全

一、什麼是線程安全?當一個線程訪問一個對象時,如果不用考慮這些線程在運行時環境下的調度和交替執行,也不需要進行額外的同步,或者在調用方法進行任何其他協調操作,調用這個對象的行爲都可以獲得正確的結果,那這個對象是線程安全的。 線程安全的代

原创 java中的異步處理和Feature接口(一)

背景介紹想象這樣一個場景:你可能希望爲你的法國客戶提供指定主題的熱點報道。爲實現這一功能,你需要向 谷歌或者Twitter的API請求所有語言中針對該主題最熱門的評論,可能還需要依據你的內部算法 對它們的相關性進行排序。之後,你可能還需要使

原创 使用CompletableFuture構建異步應用(二)

本文主要介紹Java 8 中的異步處理的方式,主要是 CompletableFuture類的一些特性。 爲了展示CompletableFuture的強大特性,我們會創建一個名爲“最佳價格查詢器” (best-price-finder)的

原创 程序員們,轉變你的思維方式吧!

筆者已經工作兩年多了,在這裏我想談下關於程序員關於職業的思維方式。對於職業的思維方式,決定了一個人的選擇和成就。建立一個正確的思維方式,有利於我們主動管理自己的職業生涯,從而達到自己追尋的結果。轉變自己的思維方式我在工作當中發現,有許多開

原创 工廠方法創建CompletableFuture(三)

CompletableFuture類自 身提供了大量精巧的工廠方法,使用這些方法能更容易地完成整個流程,還不用擔心實現的細節。 public Future<Double> getPriceAsync(String product)

原创 使用並行流還是CompletableFuture(四)

我們知道,對集合進行計算,可以使用並行和異步的CompletableFuture操作,都可以加快其處理,那麼到底該使用並行還是異步呢?並行流和CompletableFuture如上篇博客中所講到的getPrice()方法,使用並行方式

原创 枚舉enum基本特性

enum(枚舉)是Java se5中添加的一個新特性,是指一個經過排序的、被打包成一個單一實體的項列表。一個枚舉的實例可以使用枚舉項列表中任意單一項的值。枚舉在各個語言當中都有着廣泛的應用,通常用來表示諸如顏色、方式、類別、狀態等等數目有限

原创 Java線程調度與線程優先級

一、線程調度線程調度是指系統爲線程分配處理器使用權的過程,主要調度方式有兩種,分別是協同式線程調度和搶佔式線程調度。1.1 協同式線程調度協同式線程調度,線程的執行時間由線程本身控制。協同式線程調度,線程執行時間由線程本身來控制,線程把自己

原创 線程的實現方式

本文主要介紹線程的3種實現方式和java線程的實現方式。線程是比進程更輕量級的調度執行單位,線程的引入,可以把一個進程的資源分配 和執行調度分開,各個進程既可以共享進程資源(內存地址、文件I/O等),又可以獨立調度(線程是cpu調度的基本單

原创 函數重構之道

我們先來介紹寫的比較長的函數。以下代碼做了好幾件事情。它創建緩衝區、獲取頁面、搜索繼承下來的頁面、渲染路徑、添加神祕的字符串、生產HTML等等。 // Listing 3-1 public static String test

原创 先行發生原則(happens-before)介紹

如果Java內存模型中所有的有序性都僅僅靠volatile和synchronized來完成,那麼有一些操作將會變得很煩瑣,但是我們在編寫Java併發代碼的時候並沒有感覺到這一點,這是因爲Java語言中有一個“先行發生”(happens-be

原创 Java內存模型

多任務處理在現代計算機操作系統中幾乎已經是一項必備的功能了。計算機cpu的運算速度與它的存儲和通信子系統速度的差距太大,大量的時間都花費在磁盤I/O、網絡通信或數據庫訪問上。如果不希望處理器在大部分時間裏都處於等待其他資源的狀態,那麼併發的

原创 volatile變量詳解

關鍵字volatile可以說是Java虛擬機提供的最輕量級的同步機制,但是它並不容易完全被正確、 完整地理解,以至於許多程序員都習慣不去使用它,遇到需要處理多線程數據競爭問題的時候一律使用synchronized來進行同步。 當一個變量

原创 分佈式系統入門

一、什麼是分佈式系統?分佈式系統是一個硬件或軟件組件分佈在不同的網絡計算機上,彼此之間僅僅是通過消息傳遞進行通信和協調的系統。 首先分佈式系統一定是由多個節點組成的系統,一般來說一個節點就是我們的一臺計算機;然後這些節點不是孤立的,而