用Java创建的线程在Windows和Linux上的行为是否不同?[英] Do threads created in Java behave differently on Windows and Linux?

问题描述

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

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

推荐答案

这是一个很笼统的问题,所以我给出一个笼统的答案.

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

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

两个平台上线程的最大区别在于,Linux 上的所有线程都是一种进程形式.Windows 对待线程和进程的方式非常不同.

根据我的个人经验,Windows 上的本机线程更轻量级,并且在单进程应用程序中的性能可能稍好一些.相应地(也许是无关紧要的)是,与 Linux 对应的进程相比,Windows 进程是极其重量级的.

本文地址:https://www.itbaoku.cn/post/978738.html