Oracle官方併發教程之執行器(Executors)
在之前所有的例子中,Thread物件表示的執行緒和Runnable物件表示的執行緒所執行的任務之間是緊耦合的。這對於小型應用程式來說沒問題,但對於大規模併發應用來說,合理的做法是將執行緒的建立與管理和程式的其他部分分離開。封裝這些功能的物件就是執行器,接下來的部分將講詳細描述執行器。
相關推薦
Oracle官方併發教程之執行器(Executors)
原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 在之前所有的例子中,Thread物件表示的執行緒和Runnable物件表示的執行緒所執行的任務之間是緊耦合的。這對於小型應用程式來說沒問題,但對於大規模併發應用來說,合理的做法是將執行緒的建立與管理和程式的其他部分分離開。封裝這些功能
Oracle官方併發教程之執行緒物件
原文連結,譯文連結,譯者:鄭旭東 在Java中,每個執行緒都是Thread類的例項。併發應用中一般有兩種不同的執行緒建立策略。 直接控制執行緒的建立和管理,每當應用程式需要執行一個非同步任務的時候就為其建立一個執行緒 將執行緒的管理從應用程式中抽象出來作為執行器,應用程式將任務傳遞給執行器,
Oracle官方併發教程之執行緒池
原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 在java.util.concurrent包中多數的執行器實現都使用了由工作執行緒組成的執行緒池,工作執行緒獨立於所它所執行的Runnable任務和Callable任務,並且常用來執行多個任務。 使用工作執行緒可以使建立執行緒的開銷最
Oracle官方併發教程之不可變物件(定義不可變物件的策略)
原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 以下的一些規則是建立不可變物件的簡單策略。並非所有不可變類都完全遵守這些規則,不過這不是編寫這些類的程式設計師們粗心大意造成的,很可能的是他們有充分的理由確保這些物件在建立後不會被修改。但這需要非常複雜細緻的分析,並不適用於初學者。
Oracle官方併發教程之程序和執行緒
原文連結,譯文連結,譯者:bjsuo,校對:鄭旭東 在併發程式設計中,有兩個基本的執行單元:程序和執行緒。在java語言中,併發程式設計最關心的是執行緒,然而,程序也是非常重要的。 即使在只有單一的執行核心的計算機系統中,也有許多活動的程序和執行緒。因此,在任何給定的時刻,只有一個執行緒在實
Oracle官方併發教程之活躍度
原文地址,譯文地址,譯者:李任,鄭旭東 校對:蘑菇街-小寶 一個併發應用程式能及時執行的能力稱為活躍性。本節將介紹最常見的活躍性問題:死鎖(deadlock),以及另外兩個活躍性問題:飢餓(starvation)和活鎖(livelock)。 死鎖 原文地址 死鎖描述了這樣一種情景,兩個或多個
Oracle官方併發教程之原子變數
原文地址,譯文地址 ,譯者:李任,校對:鄭旭東 java.util.concurrent.atomic包定義了對單一變數進行原子操作的類。所有的類都提供了get和set方法,可以使用它們像讀寫volatile變數一樣讀寫原子類。就是說,同一變數上的一個set操作對於任意後續的get操作存在ha
Oracle官方併發教程之高階併發物件
原文地址,譯文地址 譯者:李任 目前為止,該教程重點講述了最初作為Java平臺一部分的低級別API。這些API對於非常基本的任務來說已經足夠,但是對於更高階的任務就需要更高階的API。特別是針對充分利用了當今多處理器和多核系統的大規模併發應用程式。 本節,我們將著眼於Java 5.0新增的一
Oracle官方併發教程之併發集合
原文地址 譯文地址 譯者:李任 校對:方騰飛 java.util.concurrent包囊括了Java集合框架的一些附加類。它們也最容易按照集合類所提供的介面來進行分類: BlockingQueue定義了一個先進先出的資料結構,當你嘗試往滿佇列中新增元素,或者從空佇列中獲取元素時,將會阻
Oracle官方併發教程之Executor介面
原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 java.util.concurrent中包括三個Executor介面: Executor,一個執行新任務的簡單介面。 ExecutorService,擴充套件了Executor介面。添加了一些用來管理執行器生命週期和任務生命週期的
Oracle官方併發教程之鎖物件
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.Random; public class Safelock { static
Oracle官方併發教程之中斷
原文連結,譯文連結,譯者: 蘑菇街-小寶 校對:樑海艦 中斷是給執行緒的一個指示,告訴它應該停止正在做的事並去做其他事情。一個執行緒究竟要怎麼響應中斷請求取決於程式設計師,不過讓其終止是很普遍的做法。這是本文重點強調的用法。 一個執行緒通過呼叫對被中斷執行緒的Thread物件的inter
Oracle官方併發教程之Guarded Blocks
原文連線,譯文連線,譯者:Greester,校對:鄭旭東 多執行緒之間經常需要協同工作,最常見的方式是使用Guarded Blocks,它迴圈檢查一個條件(通常初始值為true),直到條件發生變化才跳出迴圈繼續執行。在使用Guarded Blocks時有以下幾個步驟需要注意: 假設guarde
Oracle官方併發教程之不可變物件
原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 一個物件如果在建立後不能被修改,那麼就稱為不可變物件。在併發程式設計中,一種被普遍認可的原則就是:儘可能的使用不可變物件來建立簡單、可靠的程式碼。 在併發程式設計中,不可變物件特別有用。由於建立後不能被修改,所以不會出現由於執行緒干擾
Oracle官方併發教程之併發隨機數
原文地址 譯文地址 譯者:李任 校對:方騰飛 在JDK7中,java.util.concurrent包含了一個相當便利的類,ThreadLocalRandom,當應用程式期望在多個執行緒或ForkJoinTasks中使用隨機數時。 對於併發訪問,使用TheadLocalRandom代替Math
Oracle官方併發教程之同步
原文連結,譯文連結,譯者:蘑菇街-小寶,Greenster,李任 校對:丁一,鄭旭東,李任 執行緒間的通訊主要是通過共享域和引用相同的物件。這種通訊方式非常高效,不過可能會引發兩種錯誤:執行緒干擾和記憶體一致性錯誤。防止這些錯誤發生的方法是同步。 不過,同步會引起執行緒競爭,當兩個或多個執
5.2探究執行器(Executors)
你可以通過java提供的執行緒API來執行任務,像建立一個java.lang.Thread(newRunnableTask()).start();這個應用在可以執行多工的機器表現更為明顯(運行當前執行緒,建立執行緒和線上程池中隨意選擇執行執行緒)。 Note 一個任務
Oracle官方併發教程之一個同步類的例子
原文連結,譯文連結,譯者:Greenster,校對:鄭旭東 是表示顏色的類,每一個物件代表一種顏色,使用三個整形數表示顏色的三基色,字串表示顏色名稱。 public class SynchronizedRGB { // Values must be between 0 and
多執行緒與高併發程式設計之基礎知識(上)
前言 幾乎所有的程式設計師都知道,現代作業系統進行資源分配的最小單元是程序,而作業系統進行運算排程的最小單元是執行緒,其實,在Linux中執行緒也可以看作是一種輕量級的程序,那麼執行緒是包含於程序之中的,是程序中實際的運作單位;同一程序中的多個執行緒共用同一塊
【Oracle 叢集】Oracle 11G RAC教程之叢集安裝(七)
Oracle登入rac1進行上傳,解壓安裝p13390677_112040_Linux-x86-64_1of7.zip、p13390677_112040_Linux-x86-64_2of7.zip、p13390677_112040_Linux-x86-64_3of7.zip到/media下,並解壓