EventBus的四種執行緒模式

2021-08-17 17:03:35 字數 1170 閱讀 8938

1、四種模式分別是:posting、main、background、async。如果是想更新ui就使用main模式,如果要進行耗時操作最好是使用async,因為這個模式能永遠保證在不一樣的執行緒中進行操作,而且都是子執行緒。

(1)posting:這種模式就是eventbus預設的模式,我們在使用的時候不需要再訂閱者的方法的註解後面加任何東西(選擇模式),但是這種只能在同乙個執行緒中接收,也就是說,如果是在主線程中發布訊息就只能在主線程中接收訊息,如果是在子執行緒中,那麼也只能在相同的子執行緒中去接收訊息。如果非要宣告posting的話,寫法如下:

@subscribe(threadmode = threadmode.posting)

public void

showmsgfromsecondactivity(messagepojo msg)

(2)main:這種模式保證了訂閱者指定的那個接收方法肯定要主線程中執行,可以放心的在裡面執行更新ui操作。無論發布者是在主線程中還是在那一條子執行緒中發布訊息,這邊接收的都在主線程中。寫法如下

@subscribe(threadmode = threadmode.main)

public void

showmsgfromsecondactivity(messagepojo msg)

(3)background:這種模式無論發布者是在主線程或者是那一條子執行緒中發布訊息,接收的肯定是在子執行緒中,並且是這樣理解:如果是在主線程中發布訊息,那麼就會隨機開闢一條子執行緒來接收訊息。如果是在子執行緒中發布訊息,那麼就會在相同的子執行緒來接收訊息。寫法如下:

@subscribe(threadmode = threadmode.backgroudn)

public void

showmsgfromsecondactivity(messagepojo msg)

(4)async:這種模式是無論你在那個執行緒中發布訊息都會在不同的執行緒中接受訊息。如果你在主線程中發布訊息,就會隨機的開闢一條子執行緒來接收訊息;如果是在子執行緒中發布訊息,就會開闢一條不同的子執行緒來接收訊息。

寫法如下:

@subscribe(threadmode = threadmode.async)

public void

showmsgfromsecondactivity(messagepojo msg)

設計模式筆記 四種模式 四種原則

a.簡單工廠 用乙個單獨的類來做這個建立例項的過程,這就是工廠 不符合開 封閉原剛,每次擴充套件都要更改工廠類 計算器 1.cbxtype.items.addrange new object b,策略模式 定義多種演算法,並分別封裝,之間可以互相替換,演算法的變化不影響到客戶 收銀 context ...

四種執行緒池

其他執行緒池 核心執行緒 執行緒池大小 佇列策略 newcachedthreadpool integer.max value synchronousqueue newfixedthreadpool 建立時可以設定引數 建立時可以設定引數 linkedblockingqueue newschedule...

四種執行緒池

threadpoolexecutor的引數 int coresize,核心執行緒 int maxsize,最大執行緒 long time,空閒執行緒超時時間,超時後銷毀 timeunit 空閒時間單位 blockingqueue taskqueue,存放任務的佇列,threadfactory thr...