簡體   English   中英

在java中並發訪問Singleton

[英]Concurrent access of Singleton in java

我有一個sinlgeton對象,它持有一個方法,巫婆不同步。 單個用戶可以一次訪問單例 - 如果多個客戶端訪問該對象會發生什么? 是否會以先來先服務的方式提供對象引用...也就是說,一個客戶端是否必須等待第一個完成對象,或者它將在內存中被賦予相同的對象引用?

我對單例中未同步的方法感到奇怪。 如果2個客戶調用Singleton.method(param),使用不同的參數 - 它們不會互相產生問題嗎?

如果您的方法不使用任何共享狀態(例如,單例字段),則這是完全安全的。 方法參數在線程堆棧上傳遞 - 這是本地的並且是堆棧專用的。

想想兩個運行相同代碼但在內存中不同區域運行的處理器。

Singleton意味着應該只有一個類的實例。 嗯,如果沒有正確實施單身人士,這可能不是真的。 擁有單例的最安全的方法是將其聲明為enum

如果有一個未同步的方法,則意味着多個線程可以同時執行該方法的主體。 如果單身是不可變的那么就不用擔心了。 否則你應該注意可能的不一致。 一個線程可以更改狀態,而另一個線程執行相同操作,從而導致難以預測的結果,非常難以調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM