我有这种通过线程标识客户端的配对机制。当线程被销毁时,客户端的配对被销毁并且其ID被设置为-1。在线程开始之前获取线程的线程ID
现在为了让我获得线程ID,线程当然必须运行或启动。
我想知道如果我可以创建一个线程,获得ID,然后设置可运行后,或者如果我能得到的是正在运行我的函数当前线程的ID ..
例子就是我想做的事:
void createClientThreaded(final Client client) {
new Thread(new Runnable() {
@Override public void run() {
while(!client.stop()) {
Utils.sleep(1000);
//Do other stuff here..
client.setThreadID(/* This Thread's ID */);
// Do other stuff here..
}
}
});
}
有关我如何做到这一点的任何想法?线程标识符在每个进程中是唯一的,还是整个系统都是唯一的?换句话说,可以同时运行两个jar文件具有相同的线程ID?
呃我不确定我是否做得对,但我做到了:Thread.currentThread()。getID();这似乎工作。但是,无法确定每个进程或系统是否是唯一的。 – Brandon 2013-05-11 03:11:15
这个问题和答案不包括如何“稍后设置线程可运行” – 2017-09-05 12:22:22
@MakanTayebi但它涵盖了我设置线程ID时的需要。您可以使用条件变量或锁定延迟线程,并稍后设置可运行。我可以展示如果你喜欢(我会发布一个解决方案)。当我发布这篇文章时,我对Java并不擅长,只是想要一种方法来稍后设置runnable或获取尚未启动的线程的threadID。 – Brandon 2017-09-05 12:25:45