2021-04-18 15:53  阅读(66)
文章分类:Java 基础实战 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-examples.html

以下实例演示了如何使用 getThreadId() 方法获取线程id:

    /*
     author by w3cschool.cn
     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
    
点赞(1)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 实例 – 获取线程id
上一篇
Java 实例 – 死锁及解决方法
下一篇
Java 实例 – 使用 Socket 连接到指定主机