在Java中创build的线程在Windows和Linux上的行为是否有所不同?

据我所知,Java正在使用操作系统线程(与Erlang相比),这意味着在Windows和Linux上使用Java创build的线程可能会有所不同。

Windows和Linux上的Java线程有什么不同? 最大的区别是什么? 这可能只是performance上的差异?

这是一个非常普遍的问题,所以我会给出一个普遍的答案。

Java从绿色线程切换到早期开发的本地线程。 这并不意味着在Windows和Linux上创建的线程将有不同的表现,因为这两个平台将在各自的JVM实现中使用本地线程。

线程接口由每个操作系统公开给Java,同样,通过pthread和Windows线程进行线程化的本地接口也非常相似。

在两个平台上线程的最大区别是Linux上的所有线程都是一个进程的形式。 Windows对待线程和进程的方式截然不同。

根据我的个人经验,Windows上的本地线程稍微轻一些,可能在单个进程应用程序中稍微好一些。 相应地(也许是不相关的),Windows进程与Linux相比是非常重量级的。

我已经在这两个操作系统中使用线程,并没有为Java开发人员的差异。 🙂

JVM隐藏所有操作系统差异给你…

就像以前回答的窗口上的线程是Linux的重量级大。

根据经验,一个沉重的多线程应用程序可能会有自动内存垃圾回收器的延迟,并可能产生巨大的内存峰值。