Как, что я знаю, Java использует потоки операционной системы (в отличие от т.е. Erlang), который означает, что потоки, созданные с Java в Windows и Linux, могут вести себя отличающиеся.
Есть ли какие-либо различия на потоках Java в Windows и Linux? Каково самое большое различие? Это - возможно, только разница в производительности?
Это очень общий вопрос, поэтому я дам общий ответ.
Java перешла с зеленых потоков на собственные потоки на ранних этапах своего развития . Это не означает, что потоки, созданные в Windows и Linux, будут вести себя по-разному, поскольку обе платформы будут использовать собственные потоки в своих соответствующих реализациях JVM.
Интерфейс потоков, предоставляемый Java каждой ОС, и аналогично собственные интерфейсы для потоковой передачи через pthreads и потоки Windows очень похожи.
Самая большая разница в отношении потоковой передачи на двух платформах заключается в том, что все потоки в Linux являются формой процесса. Windows по-разному относится к потокам и процессам.
По моему личному опыту, собственные потоки в Windows немного легче и могут работать немного лучше в приложениях с одним процессом. Соответственно (и, возможно, неважно) процессы Windows являются чрезвычайно тяжелыми по сравнению с их аналогами в Linux.
Я уже использовал thread в обеих ОС, и никаких отличий для java-разработчика нет. :)
JVM скрывает от вас все различия ОС. ..
как уже было сказано ранее, потоки в Windows намного тяжелее, чем в Linux.
по опыту, тяжелое многопоточное приложение могло иметь некоторые задержки с автоматическим сборщиком мусора памяти, которые могут генерировать огромные пики памяти.