【发布时间】:2021-05-09 10:52:36
【问题描述】:
我有多个线程池,每个线程池运行 4 个线程。每个线程根据它们提供的唯一 ID 锁定一些公共资源。我使用Thread.currentThread().getId() 作为唯一ID 来锁定和释放资源。
我在 Thread 类中读到,线程 ID 只是一个递增和分配的长数字,一旦线程终止,它也可以重用。但它没有提及任何关于它在线程池中的行为。
线程 ID 在属于不同线程池的线程中是否保证唯一?
【问题讨论】:
-
我会这么认为。线程池只是以某种方式管理的池的集合,但最终它们只是线程,它们的 ID 应该是唯一的。
-
@RandyCasburn Semaphores 不适合我的用例。我锁定的资源是来自对象池的可重用对象,我必须跟踪一些统计数据,包括每个线程的内存占用情况。
-
@Divanshu - 明白了。
标签: java multithreading threadpool executorservice