gpt4 book ai didi

java - Java 线程和 OS 线程之间的通信

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:56 25 4
gpt4 key购买 nike

据我所知,Java线程可以使用一些线程API进行通信。但我想知道 Java 线程和 OS 线程是如何相互通信的。例如,一个 Java 线程需要等待某个 OS 线程完成其执行并将一些结果返回给该 Java 线程并进行处理。

最佳答案

许多人在这里混淆了线程和进程,jvm 是一个可能产生更多线程的进程。线程是较轻的进程,它们在进程内共享内存。另一方面,一个进程存在于他自己的地址空间中,这使得上下文切换更加昂贵。您可以通过操作系统提供的 IPC 机制在不同进程之间进行通信,并且由于共享内存和其他技术,您可以在同一进程内的不同线程之间进行通信。您不能在不通过普通旧 IPC 的情况下从 ThreadA(ProcessA) 到 ThreadA(ProcessB) 进行通信:ThreadA(ProcessA) -> ProcessA -> IPC(OS) -> ProcessB -> ThreadA(ProcessB)) .

您可以使用 RMI 在两个 java 进程之间进行通信,如果您想与 native 操作系统进程“对话”,则必须使用 JNI 来调用您选择的操作系统提供的 IPC 机制。

请随时在这里纠正我:)

旁注:您无法使用进程管理器查看 JVM 的线程(只要您的 JVM 不将线程映射到 native 进程,这很愚蠢但可能),您需要使用 jps 和 jstack 来做到这一点。

关于java - Java 线程和 OS 线程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com