進程:
進程是操做系統結構的基礎,是程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位。
線程:
線程能夠理解爲是進程中獨立運行的子任務數據庫
進程與線程的聯繫與區別:安全
線程安全就是多個線程訪問同一個類,無論運行時環境採用何種調度方式或者這些線程如何交替運行,而且在主調代碼中不須要任何額外的同步或協同,這個類都能表現出正確的行爲,那麼就程這個類是線程安全的。多線程
同步和異步是針對方法調用而言的
同步是指方法調用會等待方法返回,方法返回後才能繼續往下執行。
異步是指方法調用會當即返回,並繼續向下執行,可是異步調用當即返回並不表示這個調用請求處理完成,而是會在後臺起一個線程去執行。併發
併發:多個線程搶佔同一CPU時間片
並行:不一樣的CPU同時執行不一樣的線程異步
臨界區用來表示一種公共資源。能夠被多線程使用,可是一次只能一個線程使用它,一旦臨界區被佔用,其餘線程要想使用臨界區資源,則只能進入阻塞等待隊列。操作系統
阻塞和非阻塞一般用來形容多線程間的相互影響。
若是一個線程佔用了臨界區資源,那麼其餘全部須要這個資源的線程就會在這個臨界區的阻塞隊列中等待,等待就會致使線程掛起,致使阻塞。若是佔用這個臨界區資源的線程一直不釋放資源,那麼全部阻塞在這個臨界區的線程都不能進行工做。
而非阻塞是多個線程同時進入臨界區。線程
死鎖是指兩個或者多個線程相互持有對方須要的資源,致使這些線程處於等待狀態,沒法繼續前行
死鎖產生的必要條件:隊列
避免死鎖的幾個方式:進程
某些線程於其餘線程搶佔CPU時間片時,老是沒有搶佔到CPU時間片,就會使線程處於飢餓狀態內存
與死鎖相反,活鎖是過分的釋放CPU資源,都不去搶佔資源,致使線程阻塞