1弛随、并發(fā)和并行
? 并發(fā)瓢喉,指的是宁赤,同一個時間段舀透,有幾個程序在同一個CPU上運行,但是任意一個時間點只有一個程序運行决左。
? 并行愕够,指同一個時間點,有多個程序在多個CPU運行佛猛。
? 由于CPU的切換速度非郴蟀牛快,64ms继找,而人的反應(yīng)速度是100ms遂跟,因此并發(fā)在我們?nèi)庋劭磥恚c并行并無差異。
2幻锁、線程
? 程序執(zhí)行的最小單位
3凯亮、線程執(zhí)行的兩個條件
3.1、狀態(tài)必須是runnable
3.2哄尔、分配到CPU時間片
? 線程分配到了資源之后假消,進入runnable狀態(tài),必須等到CPU分配時間片給它岭接,它才能在CPU上執(zhí)行相應(yīng)的指令
4富拗、臨界區(qū)(共享數(shù)據(jù))
? 共享數(shù)據(jù),可以被多個線程同時競爭訪問
5鸣戴、同步和異步
? 同步啃沪,指的是線程之間按照的執(zhí)行是順序的,會等待當前線程體結(jié)束之后再調(diào)用下一個線程體窄锅;異步谅阿,則相反,是亂序的酬滤,也許當前線程體還未執(zhí)行完签餐,就執(zhí)行下一個,也就是說同步的時候盯串,線程在CPU上的執(zhí)行是有序的氯檐,1-5的這個時間片段之間,CPU執(zhí)行線程A的指令体捏,6-10執(zhí)行線程B的指令冠摄;而異步,CPU的時間片分配是亂序的几缭,可能1-3是B然后4-5又切換到了A河泳。同步一般通過鎖來實現(xiàn)。
? 同步和異步年栓,指的是線程之間的關(guān)系拆挥,比如線程A和線程B,它們要么是同步的要么是異步的某抓。
6纸兔、阻塞和非阻塞
? 阻塞,指的是由于某個線程占用了臨界區(qū)否副,而其他線程(在獲取CPU時間片之后發(fā)現(xiàn)臨界區(qū)被占用)無法訪問該臨界區(qū)進行了內(nèi)存意義上的掛起汉矿,進入到阻塞池(鎖池或者是等待池),等待再次獲取資源被喚醒备禀,此時會釋放CPU的使用權(quán)洲拇,此時CPU不會再分配時間片給池中的線程奈揍,直到再次獲取資源進入到runnable狀態(tài)之后。
? 非阻塞赋续,指的是線程的執(zhí)行不會受其他線程的影響打月,所有線程都不斷嘗試向前執(zhí)行。
? 阻塞和非阻塞蚕捉,是線程的狀態(tài)奏篙,在某個時刻,線程要么處于阻塞要么非阻塞迫淹;是否能夠獲取到線程需要的數(shù)據(jù)秘通,不能就阻塞,否則就非阻塞敛熬。
7肺稀、同步異步以及阻塞非阻塞之間的關(guān)系
? 阻塞,是同步機制的結(jié)果应民;非阻塞话原,是異步機制的結(jié)果。