正如我所知,Java使用的是操作系統線程(與Erlang相比),這意味着在Windows和Linux上使用Java創建的線程可能會有所不同。在Java中創建的線程在Windows和Linux上的行爲有所不同嗎?
Windows和Linux上的Java線程有什麼區別嗎?最大的區別是什麼?這可能只是表現上的差異?
正如我所知,Java使用的是操作系統線程(與Erlang相比),這意味着在Windows和Linux上使用Java創建的線程可能會有所不同。在Java中創建的線程在Windows和Linux上的行爲有所不同嗎?
Windows和Linux上的Java線程有什麼區別嗎?最大的區別是什麼?這可能只是表現上的差異?
這是一個非常普遍的問題,所以我會給出一個普遍的答案。
Java從綠色線程切換到本機線程early in its development。這並不意味着在Windows和Linux上創建的線程會有不同的表現,因爲這兩個平臺都會在各自的JVM實現中使用本地線程。
每個操作系統都向Java公開的線程接口,同樣,通過pthread和Windows線程進行線程化的本地接口也非常相似。
在兩個平臺上線程的最大區別是Linux上的所有線程都是一種進程形式。 Windows對待線程和進程的方式截然不同。
根據我的個人經驗,Windows上的本機線程稍微輕量級,在單個進程應用程序中可能會稍微好一些。相應地(也許不相關),Windows進程與Linux相比是非常重量級的。
我已經在兩個操作系統中都使用過線程,並且java開發人員沒有任何區別。 :)
JVM全部隱藏操作系統差異,你...
如前面回答的Windows線程是大權重股並不是Linux的。
根據經驗,一個沉重的多線程應用程序可能會在自動內存垃圾回收器方面出現一些延遲,並且可能會產生巨大的內存峯值。