Java线程ID在多个线程池中是否唯一?

3
我有多个线程池,每个线程池运行4个线程。每个线程基于它所提供的唯一标识符锁定一些共享资源。我使用 Thread.currentThread().getId() 作为唯一标识符来锁定和释放资源。
我在 Thread 类中读到,线程 ID 只是一个递增分配的长整型数字,一旦线程终止,它可能被重新使用。但是它没有提及在线程池中的行为。
线程 ID 是否保证在属于不同线程池的线程中是唯一的?

我想是的。线程池只是一些被以某种方式管理的池的集合,但最终它们只是线程,它们的ID应该是唯一的。 - Sam Orozco
虽然不是直接相关的,但您可以考虑使用信号量来控制线程内部对资源的访问。这里有一个示例 - Randy Casburn
@RandyCasburn 信号量不适合我的用例。我锁定的资源是来自对象池的可重用对象,我必须跟踪一些统计信息,包括每个线程的内存占用情况。 - Divanshu
@Divanshu - 明白了。 - Randy Casburn
1个回答

1

哦,发送得太快了。然后是的,根据Javadocs,ID是唯一的(尽管线程终止后可能会被重用)。 - BahmanM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接