Java 與 Spring 結合的多執行緒處理

Bruce Hsu
Dec 11, 2020

前言

近期在專案上碰到同事處理MultiThread時的一系列問題,其實Java語言好像每一個版本的設計都有一些複雜及原由,即使用過…過一陣子還是很容易失憶的開始Google,所幸自己整理了他的用法,以及Spring Framework要怎麼優雅整合他。

Java MultiThread 與 ThreadPool 的邂逅

我們正常開發時期會使用ThreadPool來處理多執行緒問題,而不是一直創造Thread來浪費效能。

好處是我們可以重複使用已經準備好的Thread,而不用到處生成新的Thread和程式碼,要知道…任何一個物件生成以及Thread都是開銷。

Executor 與 Task

Java將執行器與任務切分開來。

Executor 是一個抽象介面,Java定義了他的擴充介面

ExcutorService — 它提供了一些任務生命週期的管理和追蹤。

Java已經幫我們實現了可以直接用的 ThreadPoolExecutor,
以及基於work-stealing 演算法實現的 ForkJoinPool。

ScheduledExecutorService — 額外提供了任務排程命令。

Java同樣的實現了ScheduledThreadPoolExecutor。

接著來看看ExecutorService操作Runnable與Callable

--

--

Bruce Hsu

I'm a Java engineer, eager to learn new skills, technique and willing to take challenges.