众所周知
myTid() -
返回调用线程的标识符,该标识符与setThreadPriority(int,int)一起使用。
但是我发现Thread.currentThread().getId()
不等于Process.myTid()
。因此,我猜前者是JVM版本的线程ID,后者是Linux版本的线程ID。
我对吗?如果是这样,为什么Java会创建自己的线程ID而不使用Linux线程ID?
更新:
经过进一步研究并阅读了android的源代码,我有了新的认识:
Process.myTid()
是与平台(OS)相关的操作,Process.setThreadPriority()
在android的本机级别源中也是如此,它们都调用系统调用来实现目标。
但是java是一种与平台无关的语言,java并不强制主机os需要“
tid”或getTid()
方法,因为另一个os可以通过字符串键(仅作为示例,:)来标识其线程。然后,java用自己的方式标识其线程,在java作用域中分配一个唯一的线程ID,如果Java提供了像这样的静态api
Process.setThreadPriority()
,则Java作用域ID肯定是一个参数,但是我们不需要,因为我们可以通过调用来实现线程对象方法setPriority(int priority)
。
欢迎任何评论。
更新:
答案都是正确的。但是法登的评论使我更加清楚。谢谢你们。
我相信Java环境中有两种类型的线程:
问题内容: 这些通话实际上对会话意味着什么? 输出值 问题答案: 在服务方法内部,我们请求会话,并且所有事情都会自动获取,就像创建HttpSession对象一样。无需生成唯一的会话ID。无需创建新的Cookie对象。一切都会在后台自动发生。 调用请求对象的方法后,容器将立即创建会话的新对象,并生成一个唯一的会话ID来维护会话。该会话ID被传输回响应对象,以便每当客户端发出任何请求时,它也应将会话I
问题内容: @id/和之间的区别是什么@+id/? 在@+id/加号中+指示创建一个新的资源名称并将其添加到R.java文件中,但是那又如何@id/呢?从:的文档中,ID当引用Android资源时ID,不需要加号,但必须添加android包名称空间,如下所示: 但是在下面的图像中,Eclipse并未提出任何建议@android:id/。 该图显示了对@ / id和@ + / id的建议 是和一样吗
本文向大家介绍Android中的Parcelable和Serializable之间的区别,包括了Android中的Parcelable和Serializable之间的区别的使用技巧和注意事项,需要的朋友参考一下 本示例演示了Android中可打包和可序列化之间的区别 可序列化 可序列化是一个可标记的接口,或者我们可以将其称为空接口。它没有任何预先实现的方法。可序列化将把一个对象转换为字节流。因此,
hiii 我是机器人开发中的新手。谁能告诉我什么是编译SdkVersion和buildTollsVersion在构建工具版本中定义。 这是正确的定义吗。。?如果不是,那会导致什么。。? 请帮忙谢谢
有什么区别?公共布尔onKeyDown(int-keyCode,KeyEvent-event)参数是keyCode,按钮,用户按下,但是KeyEvent是什么?
问题内容: 我有两个问题,可能需要一些帮助来理解它们。 和之间有什么区别?我知道这 意味着在单独的外壳中运行命令,然后将其传递给变量。有人可以帮助我理解这一点吗?如果我错了,请纠正我。 如果我们可以使用并且效果很好,那我为什么不能使用它呢?两者的执行周期有何不同? 问题答案: 语法是令牌级别的,因此美元符号的含义取决于其所在的令牌。表达式是现代代名词,代表命令替换;这意味着运行并将其输出放在此处。