用Java创建的线程在Windows和Linux上的行为有何不同?

时间:2010-07-13 13:37:24

标签: java windows linux multithreading

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

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

3 个答案:

答案 0 :(得分:16)

这是一个非常笼统的问题,所以我会给出一般答案。

Java从绿色线程切换到本机线程early in its development。这并不意味着在Windows和Linux上创建的线程的行为会有所不同,因为两个平台都会在各自的JVM实现中使用本机线程。

每个操作系统向Java公开的线程接口,类似于通过pthreads和Windows线程进行线程化的本机接口非常相似。

两个平台上线程的最大区别在于Linux上的所有线程都是一种进程。 Windows以非常不同的方式处理线程和进程。

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

答案 1 :(得分:0)

我已经在两个操作系统中都使用过线程,而java开发人员没有差异。 :)

答案 2 :(得分:0)

JVM会隐藏所有操作系统差异......

正如之前所回答的那样,Windows上的线程是linux重量级的重量级。

根据经验,一个繁重的多线程应用程序可能会对自动内存垃圾收集器造成一些延迟,这些可能会产生巨大的内存峰值。