android 多線程——Callback

線程同步的四種機(jī)制

線程同步有四種機(jī)制,分別是臨界區(qū)(Critical Section)、互斥量(Mutex)、信號量(Semaphore)、事件(Event)

  • 臨界區(qū):
    多個線程訪問同一個共享資源的時候,有一個線程進(jìn)入公共資源(任意時刻只允許一個線程訪問的資源)后,其他打算訪問的線程被掛起,那么這個公共資源可以被稱為臨界區(qū),當(dāng)在臨界區(qū)被釋放時,其他線程才可進(jìn)入。
  • 互斥量:
    采用互斥對象機(jī)制(例如被聲明 synchronized加鎖的方法)
  • 信號量:
    在資源限制的線程數(shù)內(nèi),允許多個線程訪問的數(shù)量。
  • 事 件:
    通過通知操作的方式來保持線程的同步,還可以方便實現(xiàn)對多個線程的優(yōu)先級比較的操作

Callback回調(diào)函數(shù):

在需要使用的時候,設(shè)置Callback接口,并在里面設(shè)置需要回調(diào)的方法:

void interface CallBack{
  public void constant(int i);
}

在需要傳參數(shù)的方法內(nèi)實現(xiàn)

int i  = 3;
CallBack mCallBack;
mCallBack.constant(i);

在需要響應(yīng)的方法設(shè)置:

CallBack mCallBack = new CallBack() {
  @Override
  public void constant(int i) {
   Log.w("DDD",String.valueOf(i));
  }
};

有效利用多線程的關(guān)鍵是理解程序是并發(fā)執(zhí)行而不是串行執(zhí)行的。例如:程序中有兩個子系統(tǒng)需要并發(fā)執(zhí)行,這時候就需要利用多線程編程。

通過對多線程的使用,可以編寫出非常高效的程序。不過請注意,如果你創(chuàng)建太多的線程,程序執(zhí)行的效率實際上是降低了,而不是提升了。

請記住,上下文的切換開銷也很重要,如果你創(chuàng)建了太多的線程,CPU花費在上下文的切換的時間將多于執(zhí)行程序的時間!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容