多執行緒 android 開發之重點

2021-05-28 18:08:16 字數 1494 閱讀 3433

執行緒不是什麼時髦的技術,它是最基本的技術

執行緒:就是程式執行的一條線索,如圖

一 建立執行緒的兩種方式

1  在thread 子類覆蓋的 run 方法中編寫**

2  在傳遞給thread 物件的runnable 物件的run方法中編寫**

以下乙個示例

/*** 乙個傳統的執行緒類

*/public class traditionalthread catch (interruptedexception e)

system.out.println("1 " + thread.currentthread().getname());}}

};thread.start();

/**第二種方式,實現runnable 介面*/

thread thread2 = new thread(new runnable() catch (interruptedexception e)

system.out.println("2 "+thread.currentthread().getname());

}}   

});thread2.start();

/**第三種方式,(){}這種寫法表示定義了乙個子類,此時()裡面是空的,等於11行

* thread(new runnable()) 這表示在構造方法中定義了乙個類

* 因此**執行順序,先走列印 thread這行,再到構造方法中執行 列印runnable

* 由於runnable 是父介面,子類已有run方法,**只會走子類,永遠不會走 列印runnable*/

new thread(new runnable() catch (interruptedexception e)

system.out.println("runnable "+thread.currentthread().getname());

}    }})

catch (interruptedexception e)

system.out.println("thread "+thread.currentthread().getname());}}

}.start();

}執行結果

多執行緒並不會提高效率

二 執行緒的互斥與同步通訊

執行緒安全問題可以用銀行轉帳來解釋,如圖

如果一段**要實現原子性,就是說如果有乙個執行緒在執行該**時,別的執行緒不能執行,就像wc裡的坑,只要有乙個人占用,別的人就絕對不能進來

要實現這個功能,就要將必須完整執行的** 放在 synchorized (object){} ,  但是要注意在一段**裡,如果用2個synchorized  ,極可能出現死鎖

通常有兩個方式:

1. 使用 synchronized **及其原理

2.  使用  synchronized 方法

效果如下:

以上兩部分具體** 請參見threadcourse

工程

Android 多執行緒

1 簡介 2 android 平台下的多執行緒 package com.powerise.thread import android.os.bundle import android.view.view import android.view.view.onclicklistener import ...

Android 多執行緒

1,常用的thread 和running的方法 public static void thread thread.start private static void running thread thread new thread runnable thread.start private stat...

Android 多執行緒

最近開始做安卓專案,然而對多執行緒的理解和應用還是欠缺,最近就系統的學習一下 public class testthreadactivity extends baseactivity private void initviews private class mytask extends asynct...