区分Java线程和OS线程?
- 2024-10-29 08:34:00
- admin 原创
- 50
问题描述:
如何区分正在运行的 Java 线程和本机线程?
在Linux中每个子进程都会有一个父进程,并且他们说0是所有进程的父进程,那么所有分叉的Java线程都会有一个父线程吗?
我如何知道哪个 Java 线程与 OS 线程相关(如果 Java 线程分叉本机进程线程)。
Java线程和OS线程有命名约定吗?
正在运行的 Java 线程可以被另一个 Java 代码暂停或终止吗?
解决方案 1:
在Linux上,Java线程是通过本机线程实现的,因此使用线程的Java程序与使用线程的本机程序没有区别。“Java线程”只是属于JVM进程的线程。
在现代 Linux 系统(使用 NPTL 的系统)中,属于一个进程的所有线程都具有相同的进程 ID 和父进程 ID,但线程 ID 不同。您可以通过运行 查看这些 ID。PIDps -eLf
列是进程 ID,PPID 列是父进程 ID,LWP 列是线程(轻量级进程)ID。“主”线程的线程 ID 与进程 ID 相同,其他线程将具有不同的线程 ID 值。
较旧的 Linux 系统可能使用“linuxthreads”线程实现,但该实现不完全符合 POSIX 标准,而不是 NPTL。在 linuxthreads 系统上,线程具有不同的进程 ID。
您可以通过将系统的 C 库 (libc) 作为独立程序运行并在其输出中查看“可用扩展”来检查系统是否正在使用 NPTL 或 linuxthreads。它应该提到“本机 POSIX 线程库”或 linuxthreads。C 库的路径因系统而异:它可能是(在基于 64 位 RedHat 的系统上),或类似的东西/lib/libc.so.6
(在基于 Debian 的现代系统上,例如 Ubuntu)。/lib64/libc.so.6
`/lib/x86_64-linux-gnu/libc.so.6`
在操作系统级别,thead 没有名称;它们只存在于 JVM 中。
该pthread_kill()
C 函数可用于向特定线程发送信号,您可以使用该信号尝试从 JVM 外部终止该特定线程,但我不知道 JVM 将如何响应它。它可能会终止整个 JVM。
解决方案 2:
没有标准;这完全取决于您使用的 Java 实现。另外,不要混淆“本机线程”和“本机进程”。进程是一个独立的实体,无法查看其他进程的地址空间。线程是在本机进程的地址空间中运行的东西,它可以查看同一进程中其他线程的内存。
您在 Linux 上看到的是其他内容:某些版本的 Linux 会在进程表中为父进程的每个线程创建一个条目。这些“进程”不是真正的进程(在隔离意义上)。它们是可以使用命令列出的线程ps
。您可以使用父 PID(PPID)找到创建它们的进程。
解决方案 3:
对于如何将 Java 线程映射到 OS 线程,没有通用的解决方案,甚至根本没有。每个 JVM 实现都可以用不同的方式实现。
还有一种纯 Java 线程实现,称为绿色线程。如果不支持本机线程或系统根本不是多线程的,则可将其用作后备。您不会在操作系统上看到任何绿色线程。
正在运行的 Java 线程可以被另一个 Java 代码暂停或终止吗?
如果它们在同一个 JVM 上运行,可以使用 stop()。但这不是一个好的解决方案,可能有效,也可能无效。interrupt() 允许线程安全地自行关闭。
据我所知,没有办法在 JVM 之外终止线程。如果操作系统真的支持终止线程,那么我不会指望 Java 应用程序之后能够正常运行!
解决方案 4:
正在运行的 Java 线程可以被另一个 Java 代码暂停或终止吗?
理论上是的。实际上,Thread.kill()
和Thread.suspend()
方法已被弃用,因为它们不安全,除非在非常有限的情况下。基本问题是,终止或暂停 Java 线程可能会扰乱依赖于它的其他线程以及它可能正在更新的共享数据结构。
如果“另一个 Java 代码”指的是另一个 JVM,那么它工作的可能性就更小了。即使你知道如何发送相关的线程信号,结果也是完全不可预测的。我敢打赌,“目标”JVM 会崩溃。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件