多進(jìn)程:每啟動一個應(yīng)用程序就啟動了一個進(jìn)程。
多線程:一個應(yīng)用程序有多個順序流同時執(zhí)行。
進(jìn)程下有線程
Thread:線程
單線程:一條一條指令順序執(zhí)行
多線程:兩個流程同時執(zhí)行,跳來跳去執(zhí)行,其實是一個執(zhí)行一段時間,調(diào)到另一個執(zhí)行。時間較短,看起來像是同時執(zhí)行的。
-
多線程運行沒有規(guī)律
啟動多線程:對象 .start()不是 對象.run() ?。?!
線程是進(jìn)程中的進(jìn)一步分支
控制線程的常見函數(shù)
實際開發(fā)過程中能不用繼承就不用,因為java里面是單繼承,只能繼承一個類。所以一般用接口。如runnnable接口
Thread.sleep() 休眠 ;休眠以后不會馬上進(jìn)入運行,會進(jìn)入準(zhǔn)備狀態(tài)。單位是毫秒
Threda.yield() 自動讓出CPU,然后再搶CPU
t為一個對象
優(yōu)先級: t.getPriority();
設(shè)置最大/小優(yōu)先級: t.setPriority(Thread.MIN_PRIORITY);
線程的優(yōu)先級最大是10最小是1可以使用Thread所提供的靜態(tài)常量來設(shè)置線程的優(yōu)先級。
優(yōu)先級越高執(zhí)行的概率越大,不是一定最先執(zhí)行。
--------------------------------------------------------------------
Java4Android 第三十八集
多線程用同一數(shù)據(jù)會產(chǎn)生錯誤
同步:synchronized(this), this就是一把鎖,誰拿到誰執(zhí)行代碼。
一旦某一線程獲得了一個對象的同步鎖,那么,這個對象上所有被同步的代碼其它的線程通通都不能執(zhí)行,但是同步鎖不會影響非同步的代碼。
同步方法和同步代碼塊功能相似,不過同步代碼塊可以指定究竟鎖定哪一個對象,而同步方法鎖定的就是this。
同步方法: public synchronized void fun()
同步代碼塊:public void fun() {
synchronized(this)