操作系統有理解線程可以如何使用的特性的優點嗎?例如,如果創建一個新線程以表明它將用於密集型CPU計算,並且將阻塞I/O,那麼Java中是否有一種方法。如果這是一種能力,線程調度不會改進嗎?操作系統是否具有理解線程可以如何使用的特性的優點?
2
A
回答
3
我不確定你實際上期望操作系統如何處理線程是I/O或計算的信息。實際上線程如何調度的最重要的事情(即線程優先級和線程CPU關聯度)已經被API公開(並且支持NUMA方面也開始出現在主流OS API中)。
如果用「計算線程」表示它是做後臺處理的東西,比GUI線程不重要(從維護應用程序響應的角度來看),可能最有用的做法是降低計算一些線程。
3
這就是操作系統進程的功能。操作系統具有複雜的進程調度。操作系統跟蹤I/O使用情況和CPU使用情況,並動態調整優先級,以便CPU密集型處理不會干擾I/O。
如果您需要這些功能,請使用適當的OS進程。
1
這是必要的嗎?在I/O上阻塞的線程將導致CPU密集型線程運行。操作系統決定如何安排線程。 AFAIK沒有辦法給Java提供任何提示。
1
是的,如果您是喜歡打開大量線程(特別是在Windows上)的架構師,請務必特別瞭解它們。
Jeff Richter在Wintellect有一個名爲PowerThreading的庫。如果您在.NET上開發應用程序,這非常有用,但是因爲您正在談論JAVA,所以理解OS線程,內核模型以及中斷的工作方式會更好。
相關問題
- 1. 是否有可能使用操作系統線程創建自己的線程?
- 2. 是否可以製作使用VB.NET的操作系統?
- 3. 是否有任何操作系統不支持線程?
- 4. 是否有可能使用java製作操作系統?
- 5. 是否可以使用Python創建操作系統?
- 6. 是否可以使用Cosmos開發移動操作系統?
- 7. 使用Qt時,我是否必須在特定的操作系統上編譯特定的操作系統?
- 8. 是否可以使用Java獲取遠程主機的操作系統類型?
- 9. i7處理器與Windows8操作系統的多線程問題操作系統
- 10. 是否可以使用NMAP來查找使用MAC地址的操作系統
- 11. libumem是否僅在Solaris操作系統或其他操作系統中可用?
- 12. 在不同的操作系統上定義十進制數,如何理解C#是否使用點或逗號
- 13. forkIO線程和操作系統線程
- 14. Linux操作系統:系統()+ SIGCHLD處理多線程+
- 15. 是java的多線程對操作系統可見
- 16. 操作系統線程調度程序是否被JVM覆蓋?
- 17. 是否可以檢測Haxe中的當前操作系統?
- 18. 我可以依賴該操作系統調度線程「最優」(並行化)
- 19. 實時操作系統可以處理的進程數量
- 20. 是否有處理操作系統日期的lib(跨平臺)?
- 21. 是否有宏檢測操作系統...?
- 22. Android是否有「主機」操作系統?
- 23. 是否有使用Lisp開發的操作系統?
- 24. 如何是操作系統
- 25. 創建線程時JVM如何使用操作系統?
- 26. 是否可以使用Tokenizer來統計操作碼的數量?
- 27. 是否可以創建一個可以運行所有應用程序的操作系統?
- 28. 是具有唯一的登錄系統,可以2點
- 29. Numpy:具有特定條件的線性系統。沒有負面解決方案
- 30. 求解的線性系統具有LAPACK的dgeqrf_
應用程序對操作系統線程調度程序具有進一步「影響」的能力感覺像是一個好主意。也許問題是如果這種能力存在,那麼應用程序想要利用的線程優先級以外的特性是什麼? – McGovernTheory 2009-04-17 13:12:21