gpt4 book ai didi

java - Android中Thread.currentThread().getId()和Process.myTid()的区别

转载 作者:太空狗 更新时间:2023-10-29 15:08:02 25 4
gpt4 key购买 nike

众所周知

myTid() - Returns the identifier of the calling thread, which be used with setThreadPriority(int, int).

但是我发现 Thread.currentThread().getId() 不等于 Process.myTid()。所以,我猜前者是 JVM 版本的线程 ID,后者是 Linux 版本的线程 ID。

我说的对吗?如果是这样,为什么java自己做线程id而不用linux线程id呢?

更新:

进一步研究和阅读android的源代码后,我有了新的认识:

Process.myTid()是一个平台相关的操作,Process.setThreadPriority()也是,在android的native level source中,它们都调用实现目标的系统调用。

但 java 是一种独立于平台的语言,java 不强制主机操作系统需要一个“tid”或 getTid() 方法,因为另一个操作系统可能通过字符串键识别它的线程(只是一个例子,:))。然后java用自己的方式识别自己的线程,在java范围内分配一个唯一的线程id,如果java提供了一个静态的api,比如Process.setThreadPriority(),那么java范围id肯定是一个参数,但我们不需要,因为我们可以通过调用 Thread 对象方法 setPriority(int priority) 来做到这一点。

欢迎任何评论。

更新:

答案都是正确的。但是法登的评论让我更清楚了。谢谢大家。

最佳答案

我认为在 Java 环境中有两种类型的线程:

  • native 线程:由托管操作系统管理。
  • Java 线程:由 JVM 管理并与 native 线程通信。

关于java - Android中Thread.currentThread().getId()和Process.myTid()的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898321/

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