Создаются ли потоки, созданные в Java, по-разному в Windows и Linux?

Как я знаю, Java использует потоки операционной системы (в отличие от Erlang), это означает, что потоки, созданные с Java в Windows и Linux, могут вести себя по-разному.

Есть ли различия в потоках Java в Windows и Linux? Какая разница? Это может быть только разница в производительности?

Ответы

Ответ 1

Это очень общий вопрос, поэтому я дам общий ответ.

Java переключилась с зеленых потоков на собственные потоки в начале своего развития. Это не означает, что потоки, созданные в Windows и Linux, будут вести себя по-другому, поскольку обе платформы будут использовать собственные потоки в своих реализациях JVM.

Интерфейс потока, открытый для Java каждой ОС, и аналогичные нативные интерфейсы для потоковой передачи через pthreads и потоки Windows очень похожи.

Самые большие различия в отношении потоковой обработки на двух платформах заключаются в том, что все потоки в Linux являются одной из форм процесса. Windows обрабатывает потоки и процессы по-разному.

В моем личном опыте собственные потоки в Windows немного более легки и могут немного улучшиться в рамках отдельных приложений процесса. Соответственно (и, возможно, не имеет значения), процессы Windows чрезвычайно тяжелы по сравнению с их аналогами Linux.

Ответ 2

Я уже использовал поток в обеих ОС, и никаких отличий от разработчика Java. :)

Ответ 3

JVM скрыть все отличия ОС...

как было сказано ранее, потоки на окнах являются большими тяжеловесными, чем linux.

опыт работы с многопоточным многопоточным приложением может иметь некоторые задержки с автоматическим сборщиком мусора памяти, и они могут генерировать огромные пики памяти.