加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Thread.getId()全局唯一性问题

发布时间:2020-12-14 05:02:59 所属栏目:Java 来源:网络整理
导读:如果系统上运行多个 Java应用程序,则每个线程ID相对于所有其他Java线程都是唯一的,无论它们在运行什么应用程序? Java应用程序相对于其他Java应用程序应该是沙箱,所以我认为线程ID可能会发生冲突. 如果线程ID在所有应用程序中都是唯一的,那么系统上的其他应
如果系统上运行多个 Java应用程序,则每个线程ID相对于所有其他Java线程都是唯一的,无论它们在运行什么应用程序?

Java应用程序相对于其他Java应用程序应该是沙箱,所以我认为线程ID可能会发生冲突.

如果线程ID在所有应用程序中都是唯一的,那么系统上的其他应用程序的信息是否不会泄露(尽管很小)?例如在其他应用程序中启动了多少线程,或者甚至其他Java应用程序正在运行?

解决方法

嗯,让我来看看.

在Thread的init方法(由每个构造函数调用)中:

/* Set thread ID */
tid = nextThreadID();

在nextThreadID()中:

private static synchronized long nextThreadID() {
    return ++threadSeqNumber;
}

和:

/* For generating thread ID */
private static long threadSeqNumber;

它永远不会设置,因此默认为0.

所以显然,线程ID号总是从0开始并递增1.换句话说,你的问题的答案是它们不是全局唯一的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读