我有疑問。
假設在多線程環境中,10K個用戶同時使用一個站點,並且該站點有一個靜態方法。
如果JAVA中的靜態方法創建單個實例,那麼第10k用戶需要等待該方法,直到剩餘的用戶完成其使用。
對嗎?
任何人都可以請解釋嗎?在JAVA中是靜態方法創建單個實例嗎?
1
A
回答
6
如果JAVA中的靜態方法創建單個實例,則第10K個用戶需要等待該方法,直到剩餘的usres完成用法。
調用靜態方法不會隱式創建一個實例。你可以這樣做的方法,當然 - 但你不必這樣做。
創建實例也不需要鎖 - 儘管如此,您可以根據需要添加同步。
因此,在不需要對共享數據進行任何同步訪問的簡單靜態方法的情況下,多個線程同時調用該方法應該沒有問題。
0
NO.10K用戶不需要等待該方法,直到剩餘的使用完成使用。
因爲它不是靜態的方法不同步...所以多個線程可以訪問同一個對象。
2
我想你的意思是像單身人士或工廠,例如
public class X {
public static X getInstance() {
return new X();
}
private X() {}
}
然後這一切都取決於你在靜態方法上做了什麼。如果該方法不關心線程(如上例),那麼它不應該被同步並且可以被同時執行,然後你錯了,因爲可以同時執行X.getInstance()
並且10Kth不必等待以前完成。
如果方法不能是多線程的,它應該是同步的(整個方法或其中的一部分),那麼是的,你是對的。
相關問題
- 1. Java:在靜態方法中從超類創建一個子類的實例
- 2. Java靜態實例創建者?
- 3. 創建實例(靜態)
- 4. 在靜態方法中包裝單例實例方法是不好的?
- 5. Java靜態/實例方法優化
- 6. 靜態方法的Java實例變量
- 7. 在java中的靜態方法vs實例方法的決定?
- 8. 靜態方法vs靜態實例
- 9. 一個靜態方法總是可以轉換爲一個實例方法嗎?
- 10. Java泛型,單例和靜態方法
- 11. 創建一個類的靜態實例
- 12. 爲什麼靜態方法在單例實例中不可用?
- 13. 靜態類是一個單例嗎?
- 14. 在Java中創建靜態嵌套類的實例
- 15. 靜態var,方法還是單例?
- 16. 工廠方法創建單例實例
- 17. 我可以創建一個內部靜態類的實例嗎?
- 18. 靜態或實例方法在.NET中擴展更好嗎?
- 19. Mongoose'靜態'方法與'實例'方法
- 20. 靜態方法和實例方法C#
- 21. 在Java中創建靜態單例模式
- 22. 如何從靜態方法返回值創建C#類實例?
- 23. 創建新的實例或使用公共靜態方法?
- 24. 從靜態方法內創建類實例
- 25. 創建實例以調用靜態方法的模式名稱
- 26. 如何從靜態方法創建類的實例?
- 27. 需要在靜態和非靜態方法中使用實例
- 28. 這是在C++中創建單例類的正確方法嗎?
- 29. 如何使靜態工廠方法不是靜態實例?
- 30. 在Python中的類中創建一個類的靜態實例