使用多執行緒的情況:
乙個程式同時執行多個任務;
單執行緒可以完成,單多執行緒效率高。
併發原理:
執行緒排程將時間劃分為很多時間片段,盡可能均勻分配給每乙個執行緒,獲取時間片段的執行緒將被cpu執行,其餘執行緒全部等待。微觀上是「走走停停」,巨集觀上都在執行,這種現象叫「併發」。
執行緒排程
給執行緒分配時間片段
執行緒的生命週期(摘自:
執行緒是乙個動態執行的過程,它也有乙個從產生到死亡的過程。
生命週期的五種狀態
新建(new thread)
當建立thread類的乙個例項(物件)時,此執行緒進入新建狀態(未被啟動)。
例如:thread t1=new thread();
就緒(runnable)相當於註冊
執行緒已經被啟動,正在等待被分配給cpu時間片,也就是說此時執行緒正在就緒佇列中排隊等候得到cpu資源。例如:t1.start();
執行(running)
執行緒獲得cpu資源正在執行任務(run()方法),此時除非此執行緒自動放棄cpu資源或者有優先順序更高的執行緒進入,執行緒將一直執行到結束。
死亡(dead)將被gc**
當執行緒執行完畢或被其它執行緒殺死,執行緒就進入死亡狀態,這時執行緒不可能再進入就緒狀態等待執行。
自然終止:正常執行run()方法後終止
異常終止:呼叫stop()方法讓乙個執行緒終止執行
堵塞(blocked)不能執行,不能回到就緒狀態
由於某種原因導致正在執行的執行緒讓出cpu並暫停自己的執行,即進入堵塞狀態。
正在睡眠:用sleep(long t) 方法可使執行緒進入睡眠方式。乙個睡眠著的執行緒在指定的時間過去可進入就緒狀態。
正在等待:呼叫wait()方法。(呼叫motify()方法回到就緒狀態)
被另乙個執行緒所阻塞:呼叫suspend()方法。(呼叫resume()方法恢復)
建立執行緒(new thread)1
**同步執行:有先後順序的執行方式**非同步執行:各幹各的,多個執行緒併發執行的效果。
//**示例
public
class
createathread
}//過於侷限,重用性太差
class
mythread1
extends
thread
}}class
mythread2
extends
thread}}
解耦與耦合耦合:強制繫結。
解耦:接觸耦合關係。
執行緒就是執行緒,任務就是任務。
spring框架
程式鬆散繫結
建立執行緒(new thread)2
package day01;
/** * 介紹建立執行緒的第二種方法:定義執行緒體runnable
* @author administrator
* */
public
class
createdathread_02
}//靈活,重用性好,需要幹的活直接實現介面
class
myrunnable1
implements
runnable
}}class
myrunnable2
implements
runnable}}
溫故知新:匿名內部類故名思義,就是沒有名字的內部類。
只能(需)使用一次。用於簡化**。
建立執行緒(new thread)3
package day01;
/**使用匿名內部類的形式建立執行緒
*/public
class
createdthread_03 }};
//2runnable runn = new runnable()}};
thread t2 = new thread(runn);
t1.start();
t2.start();}}
python第一章筆記 第一章 基礎
參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...
第一章 Java多執行緒技能
乙個程序正在執行時至少會有1個執行緒正在執行。public class test 輸出結果 main 分析 乙個名稱叫做main的執行緒在執行main 方法中的 public class mythread extends thread 分析 通過在run方法前加入synchronized關鍵字,使多...
Java多執行緒程式設計(第一章)
實現方式 1.繼承thread類 2.實現runnable介面,作為thread建構函式的target物件 thread.currentthread 用來獲取呼叫這段 的執行緒,即正在執行中的執行緒 isalive 用來判斷當前執行緒是否處於runnable狀態,也就是處於就緒和執行中的執行緒。sl...