併發程式設計 兩階段終止模式

2021-10-11 19:14:30 字數 1070 閱讀 4872

呼叫 sleep 會讓當前執行緒從 running 進入 timed waiting 狀態(阻塞)

其它執行緒可以使用 interrupt 方法打斷正在睡眠的執行緒,這時 sleep 方法會丟擲 interruptedexception

睡眠結束後的執行緒未必會立刻得到執行

建議用 timeunit 的 sleep 代替 thread 的 sleep 來獲得更好的可讀性

呼叫 yield 會讓當前執行緒從 running 進入 runnable 就緒狀態,然後排程執行其它執行緒

具體的實現依賴於作業系統的任務排程器

join方法執行後會等待呼叫join方法的執行緒執行完,才會繼續執行下面的**

打斷 sleep,wait,join 的執行緒

這幾個方法都會讓執行緒進入阻塞狀態

打斷 sleep 的執行緒, 會清空打斷狀態

打斷正常執行的執行緒

在乙個執行緒 t1 中如何「優雅」終止執行緒 t2?這裡的【優雅】指的是給 t2 乙個料理後事的機會。

**如下

@slf4j

(topic =

"c.test1"

)public

class

test1

@slf4j

(topic =

"c.twophasetermination"

)static

class

twophasetermination

trycatch

(interruptedexception e)}}

);monitor.

start()

;}public

void

stop()

}}

sleep被打斷後會出現異常,會清除打斷標記,會返回預設的false

所以需要再呼叫interrupt方法重置打斷標記,返回true

兩階段提交

1 二階段提交協議 一般分為協調器c和若干事務執行者si兩種角色 當執行某一事務t的所有站點si都通知c事務執行完成,c即啟動二階段提交協議。1.首先c向所有si發訊息 c先將訊息寫到本機日誌 si收到訊息後,根據本機t的執 況,如果成功返回,不成功返回。返回前都應把要返回的訊息寫到日誌裡 2.c收...

兩階段提交

在分布式系統中,事務往往包含有多個參與者的活動,單個參與者上的活動是能夠保證原子性的,而多個參與者之間原子性的保證則需要通過兩階段提交來實現,兩階段提交是分布式事務實現的關鍵。很明顯,兩階段提交保證了分布式事務的原子性,這些子事務要麼都做,要麼都不做。而資料庫的一致性是由資料庫的完整性約束實現的,永...

兩階段提交

翻譯自 不像在本地資料庫的事務,分布式資料庫涉及到在多個資料庫中改變資料,因此,分布式事務處理更加複雜,因為資料庫間必須協調保證整個事務的原子性,即要不全部成功,要不全部失敗。事務一旦提交,無法回滾 資料保證資料的完整性的方式是使用兩階段提交 xa transaction 第一階段稱為準備階段,事務...