進程是系統進行資源分配和調度的一個獨立單位,是處於運行過程中的程序,有3個特性: 獨立熊 動態性 併發性
併發:是指同一時刻只能有一條指令被執行,但多個進程指令被快速輪換執行 宏觀上具有多個進程同時執行的效果
並行:只在同一時刻,有多條指令在多個處理器上同時執行
2:線程是進程的執行單元 可以說是它的子集
創建線程的3中方式:1:繼承Thread 重寫run()方法;2實現Runnable接口 重寫run()方法;3使用Callable接口和Future( call()方法具有返回值 )
3:線程的生命週期:新建 就緒 運行 阻塞 和死亡
同步:client端發出一個功能調用時 在沒有得到結果之前 該調用不返回。異步:client端一個異步過程調用發出後 調用者在沒得到結果之前可以做其他事。
臨界區:訪問公用資源的程序片段 共用資源無法被多個線程訪問
阻塞:調用結果返回之前,當前線程會被掛起(CPU不分配時間片)
非阻塞:不能立即得到結果之前 該函數不會阻塞當前線程 會立刻返回
併發級別:無等待併發 無鎖併發 無阻塞併發 阻塞併發
死鎖的原因:擁有的不可剝奪的資源 其數量不足以滿足多個進程運行的需要,因爭奪資源而陷入僵局 ,進程A和B不是競爭資源,而是等待對方資源導致死鎖
死鎖產生的必要條件:
1:互斥條件 資源僅能一方佔有 2:不可剝奪條件(資源不可剝奪)3:請求和保持(請求資源 保持舊資源)4:循環等待(避免循環:加鎖順序 加鎖時限 死鎖檢測)