以下实例演示了如何使用 getThreadId() 方法获取线程id:
Main.java 文件 public class Main extends Object implements Runnable { private ThreadID var;
public Main(ThreadID v) { this.var = v; }
public void run() { try { print("var getThreadID =" + var.getThreadID()); Thread.sleep(2000); print("var getThreadID =" + var.getThreadID()); } catch (InterruptedException x) { } }
private static void print(String msg) { String name = Thread.currentThread().getName(); System.out.println(name + ": " + msg); }
public static void main(String[] args) { ThreadID tid = new ThreadID(); Main shared = new Main(tid);
try {
Thread threadA = new Thread(shared, "threadA");
threadA.start();
Thread.sleep(500);
Thread threadB = new Thread(shared, "threadB");
threadB.start();
Thread.sleep(500);
Thread threadC = new Thread(shared, "threadC");
threadC.start();
} catch (InterruptedException x) {
}
} }
class ThreadID extends ThreadLocal { private int nextID;
public ThreadID() { nextID = 10001; }
private synchronized Integer getNewID() { Integer id = new Integer(nextID); nextID++; return id; }
protected Object initialValue() { print("in initialValue()"); return getNewID(); }
public int getThreadID() { Integer id = (Integer) get(); return id.intValue(); }
private static void print(String msg) { String name = Thread.currentThread().getName(); System.out.println(name + ": " + msg); } } 以上代码运行输出结果为:
threadA: in initialValue()
threadA: var getThreadID =10001
threadB: in initialValue()
threadB: var getThreadID =10002
threadC: in initialValue()
threadC: var getThreadID =10003
threadA: var getThreadID =10001
threadB: var getThreadID =10002
threadC: var getThreadID =10003
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。