java什么是同步_什么是同步?什么是互斥?
現(xiàn)代操作系統(tǒng)基本都是多任務(wù)操作系統(tǒng),即同時(shí)有大量可調(diào)度實(shí)體在運(yùn)行。在多任務(wù)操作系統(tǒng)中,同時(shí)運(yùn)行的多個(gè)任務(wù)可能:
都需要訪問(wèn)/使用同一種資源 多個(gè)任務(wù)之間有依賴關(guān)系,某個(gè)任務(wù)的運(yùn)行依賴于另一個(gè)任務(wù) 這兩種情形是多任務(wù)編程中遇到的最基本的問(wèn)題,也是多任務(wù)編程中的核心問(wèn)題,同步和互斥就是用于解決這兩個(gè)問(wèn)題的。
互斥:是指散步在不同任務(wù)之間的若干程序片斷,當(dāng)某個(gè)任務(wù)運(yùn)行其中一個(gè)程序片段時(shí),其它任務(wù)就不能運(yùn)行它們之中的任一程序片段,只能等到該任務(wù)運(yùn)行完這個(gè)程序片段后才可以運(yùn)行。最基本的場(chǎng)景就是:一個(gè)公共資源同一時(shí)刻只能被一個(gè)進(jìn)程或線程使用,多個(gè)進(jìn)程或線程不能同時(shí)使用公共資源。
同步:是指散步在不同任務(wù)之間的若干程序片斷,它們的運(yùn)行必須嚴(yán)格按照規(guī)定的某種先后次序來(lái)運(yùn)行,這種先后次序依賴于要完成的特定的任務(wù)。最基本的場(chǎng)景就是:兩個(gè)或兩個(gè)以上的進(jìn)程或線程在運(yùn)行過(guò)程中協(xié)同步調(diào),按預(yù)定的先后次序運(yùn)行。比如 A 任務(wù)的運(yùn)行依賴于 B 任務(wù)產(chǎn)生的數(shù)據(jù)。
顯然,同步是一種更為復(fù)雜的互斥,而互斥是一種特殊的同步。也就是說(shuō)互斥是兩個(gè)任務(wù)之間不可以同時(shí)運(yùn)行,他們會(huì)相互排斥,必須等待一個(gè)線程運(yùn)行完畢,另一個(gè)才能運(yùn)行,而同步也是不能同時(shí)運(yùn)行,但他是必須要安照某種次序來(lái)運(yùn)行相應(yīng)的線程(也是一種互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任務(wù)的運(yùn)行順序,即任務(wù)是無(wú)序的,而同步的任務(wù)之間則有順序關(guān)系。
轉(zhuǎn)載至鏈接:https://my.oschina.net/andyzzh1314/blog/1843575
總結(jié)
以上是生活随笔為你收集整理的java什么是同步_什么是同步?什么是互斥?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于苹果字体的小知识
- 下一篇: 关于Dapper - 能否不创建定义表对