Java获取线程ID的实例
以下实例演示了如何使用getThreadId()方法获取线程id:
publicclassMainextendsObjectimplementsRunnable{
privateThreadIDvar;
publicMain(ThreadIDv){
this.var=v;
}
publicvoidrun(){
try{
print("vargetThreadID="+var.getThreadID());
Thread.sleep(2000);
print("vargetThreadID="+var.getThreadID());
}catch(InterruptedExceptionx){
}
}
privatestaticvoidprint(Stringmsg){
Stringname=Thread.currentThread().getName();
System.out.println(name+":"+msg);
}
publicstaticvoidmain(String[]args){
ThreadIDtid=newThreadID();
Mainshared=newMain(tid);
try{
ThreadthreadA=newThread(shared,"threadA");
threadA.start();
Thread.sleep(500);
ThreadthreadB=newThread(shared,"threadB");
threadB.start();
Thread.sleep(500);
ThreadthreadC=newThread(shared,"threadC");
threadC.start();
}catch(InterruptedExceptionx){
}
}
}
classThreadIDextendsThreadLocal{
privateintnextID;
publicThreadID(){
nextID=10001;
}
privatesynchronizedIntegergetNewID(){
Integerid=newInteger(nextID);
nextID++;
returnid;
}
protectedObjectinitialValue(){
print("ininitialValue()");
returngetNewID();
}
publicintgetThreadID(){
Integerid=(Integer)get();
returnid.intValue();
}
privatestaticvoidprint(Stringmsg){
Stringname=Thread.currentThread().getName();
System.out.println(name+":"+msg);
}
}
以上代码运行输出结果为:
threadA:ininitialValue()
threadA:vargetThreadID=10001
threadB:ininitialValue()
threadB:vargetThreadID=10002
threadC:ininitialValue()
threadC:vargetThreadID=10003
threadA:vargetThreadID=10001
threadB:vargetThreadID=10002
threadC:vargetThreadID=10003
以上就是Java获取线程ID的实例的详细内容,更多关于Java获取线程ID的资料请关注毛票票其它相关文章!