java什么时候需要同步_JAVA中线程在什么时候需要同步和互斥
JAVA中線程在什么時候需要同步和互斥
關(guān)注:265??答案:6??mip版
解決時間 2021-01-27 08:10
提問者時光易老
2021-01-27 03:32
JAVA中線程在什么時候需要同步和互斥?(假如這題是考試題,要怎樣回答?)
詳細(xì)點
最佳答案
二級知識專家櫻花雨夢
2021-01-27 04:13
例如訪問同一個資源:
例如車站的售票系統(tǒng),一定是多個線程同時運行售票的吧。
有編號為10000這張票,那么線程thread1正在賣它的時候,其余的線程就不能也賣這張票了。
另一個就是著名的生產(chǎn)者-消費者問題。類比一下,老爸掙錢,打到銀行卡里,兒子花錢。(假設(shè)卡里有錢的話就暫時不打錢)
對于老爸老說,如果要打錢,查看一下卡,如果有錢,就暫時不放,并通知兒子已經(jīng)有錢;如果沒錢,當(dāng)然就打錢了。
對于兒子來說,取錢時如果有錢就取,如果沒有就等待,并通知老爸沒錢了。
這就是同步了。
不知道你理解不?
全部回答
1樓吃貨一枚
2021-01-27 07:57
賣火車票、飛機票,兩個人同時在兩個地方買的兩張票作為不能相同
2樓全球變暖丶我心卻變冷
2021-01-27 06:32
我能這樣理解嗎?
上廁所時,如果只有一個位置,我必須等上一個人出來.
上廁所時,如果不只一個位置,我不用等上一個人出來. 就可以進(jìn)去(假設(shè)有空位)
:-D
3樓柒夏錦年
2021-01-27 06:05
面試的話 你就這樣告訴他
線程的同步意味安全 譬如你取錢 你的執(zhí)行語和我用的是相同對象 那你要在卡上扣除的錢數(shù)扣在我卡上了 怎么辦
至于異步 是JAVA的閃亮點 設(shè)想下你搜索時 并沒有提交 只打上關(guān)鍵字 就出現(xiàn)了很多提示 ,另外 異步在 體育節(jié)目方面的應(yīng)用 在網(wǎng)上 你可以宣稱 你的產(chǎn)品 可以讓顧客看到賽場的比賽時鐘 這就是用異步實現(xiàn)的
4樓有你才幸福
2021-01-27 05:54
何時需要同步 在多個線程同時訪問互斥(可交換)數(shù)據(jù)時,應(yīng)該同步以保護(hù)數(shù)據(jù),確保兩個線程不會同時修改更改它。 對于非靜態(tài)字段中可更改的數(shù)據(jù),通常使用非靜態(tài)方法訪問 對于靜態(tài)字段中可更改的數(shù)據(jù),通常使用靜態(tài)方法訪問。 1、線程同步的目的是為了保護(hù)多個線程反問一個資源時對資源的破壞。 2、線程同步方法是通過鎖來實現(xiàn),每個對象都有切僅有一個鎖,這個鎖與一個特定的對象關(guān)聯(lián),線程一旦獲取了對象鎖,其他訪問該對象的線程就無法再訪問該對象的其他非同步方法。 3、對于靜態(tài)同步方法,鎖是針對這個類的,鎖對象是該類的class對象。靜態(tài)和非靜態(tài)方法的鎖互不干預(yù)。一個線程獲得鎖,當(dāng)在一個同步方法中訪問另外對象上的同步方法時,會獲取這兩個對象鎖。 4、對于同步,要時刻清醒在哪個對象上同步,這是關(guān)鍵。 5、編寫線程安全的類,需要時刻注意對多個線程競爭訪問資源的邏輯和安全做出正確的判斷,對“原子”操作做出分析,并保證原子操作期間別的線程無法訪問競爭資源。 6、當(dāng)多個線程等待一個對象鎖時,沒有獲取到鎖的線程將發(fā)生阻塞。 7、死鎖是線程間相互等待鎖鎖造成的,在實際中發(fā)生的概率非常的小。真讓你寫個死鎖程序,不一定好使,呵呵。但是,一旦程序發(fā)生死鎖,程序?qū)⑺赖簟?使用鎖定還有一些其他危險,如死鎖(當(dāng)以不一致的順序獲得多個鎖定時會發(fā)生死鎖)。甚至沒有這種危險,鎖定也僅是相對的粗粒度協(xié)調(diào)機制,同樣非常適合管理簡單操作,如增加計數(shù)器或更新互斥擁有者。如果有更細(xì)粒度的機制來可靠管理對單獨變量的并發(fā)更新,則會更好一些;在大多數(shù)現(xiàn)代處理器都有這種機制。
5樓爺自有爺?shù)姆?/p>
2021-01-27 04:50
如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進(jìn)行同步存取。
當(dāng)應(yīng)用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。
我要舉報
如以上問答內(nèi)容為低俗/色情/暴力/不良/侵權(quán)的信息,可以點下面鏈接進(jìn)行舉報,我們會做出相應(yīng)處理,感謝你的支持!
→點此我要舉報以上信息!←
推薦資訊
大家都在看
總結(jié)
以上是生活随笔為你收集整理的java什么时候需要同步_JAVA中线程在什么时候需要同步和互斥的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扫地机器人开机充电还是关机充电器_适用于
- 下一篇: dqn系列梳理_系列论文阅读——DQN及