5
A
回答
7
java do interrupts act volatile?
基於閱讀javadocs我會推斷答案是肯定的。
如果中斷狀態沒有「揮發像」語義,有解決(假設的)需要一個「之前發生」沒有任何記載的方法。沒有這些,你不能確定中斷會起作用。但他們這樣做...
中斷狀態不在內存讀取和寫入方面描述。因此,沒有理由推斷內存模型適用。
而且,事實證明,中斷的行爲JLS 17.2.3指定。然後在JLS 17.4.4,中斷被具體爲定義的同步順序提到:與同步-任何點
「如果線程T1中斷線程T2,由T1中斷其中的任何其他線程(包括T2)確定T2具有被中斷(通過拋出InterruptedException或通過調用Thread.interrupted或Thread.isInterrupted)。「
底線 - 「volatile like」行爲有保證。
最重要的是我想知道你有沒有使用中斷頂部?揮發性布爾標誌似乎更可靠
當然,我這樣做。你的推斷認爲中斷不可靠是基於(IMO)關於如何實施的錯誤心理模型。此外,中斷對在sleep
或wait
調用中被阻塞的目標線程有特殊(和有用的)行爲,依此類推。
中斷的唯一重大缺點是它們不分皁白。任何線程都可以中斷任何其他線程。相比之下,如果使用volatile布爾值,則可以更好地控制哪些線程可以「中斷」哪些線程(通過訪問修飾符,使用共享對象等)。
相關問題
- 1. C#揮發性讀行爲
- 2. 這裏需要揮發嗎?
- 3. VTK可以在Java或QT中發揮更好嗎?
- 4. Java和C++ 11揮發性
- 5. 揮發性VS不揮發
- 6. 揮發性陣列的奇怪行爲
- 7. SBT。爲發揮SBT-插件
- 8. C++揮發物,揮發性成員
- 9. 揮發性變量被優化了嗎?
- 10. 用這種用法揮發很好嗎?
- 11. 的Java:上斷言行爲
- 12. C:使用靜態揮發與「吸氣」功能和中斷
- 13. java下引用揮發性關鍵字
- 14. Java異常crshes發揮框架
- 15. 發送會話中發揮框架模板與Java
- 16. 崩潰發揮
- 17. 發揮CRUD:OV --template
- 18. MPMoviePlayerViewController發揮
- 19. 發揮在iPhone
- 20. 如何發揮docker-java的碼頭運行--rm?
- 21. 爲Java發揮框架?版本1.x.x或2.x.x
- 22. 會議中發揮框架
- 23. 播放2.0.3 application.context /中發揮
- 24. 分析中的揮發性
- 25. 揮發性數據Solr中
- 26. 按鈕中斷行嗎?
- 27. Java GUI - 不揮杆
- 28. 選擇指揮加入發行
- 29. 發揮框架演變不運行
- 30. 揮發性arraylist不按預期行事
如果你不*檢查*你的電子郵件,你永遠不會知道一條消息已發送。如果你的前門鈴響了,你馬上就會知道s.o.正在呼叫。 – laune 2015-02-12 07:43:05
'interrupt'有時可以用於中斷阻塞操作(如使用Selector或Thread.sleep等待網絡數據或等待) – immibis 2015-02-12 07:52:07