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