Java 当前线程

Java线程教程 – Java当前线程

一个语句可以由不同的线程在不同的时间执行。

Thread类静态方法currentThread()返回调用此方法的Thread对象的引用。

考虑下面的语句:

Thread  t = Thread.currentThread();

该语句将执行上述语句的线程对象的引用分配给变量t。

例子

下面的代码演示了如何使用currentThread()方法。

两个不同的线程调用CurrentThread类的run()方法中的Thread.currentThread()方法。

该程序只打印正在执行的线程的名称。

public class Main extends Thread {
  public Main(String name) {
    super(name);
  }

  @Override
  public void run() {
    Thread t = Thread.currentThread();
    String threadName = t.getName();
    System.out.println("Inside run() method:  " + threadName);
  }

  public static void main(String[] args) {
    Main ct1 = new Main("First Thread");
    Main ct2 = new Main("Second Thread");
    ct1.start();
    ct2.start();

    Thread t = Thread.currentThread();
    String threadName = t.getName();
    System.out.println("Inside  main() method:  " + threadName);
  }
}

上面的代码生成以下结果。

当你运行一个类时,JVM启动一个名为main的线程,它负责执行main()方法。

处理线程中未捕获的异常

我们可以处理线程中抛出的未捕获异常。

它使用实现java.lang.Thread.UncaughtExceptionHandler接口的类的对象来处理。

接口被定义为Thread类中的嵌套静态接口。

下面的代码显示了一个类,它可以用作线程的未捕获异常处理程序。

class CatchAllThreadExceptionHandler implements Thread.UncaughtExceptionHandler {
  public void uncaughtException(Thread t, Throwable e) {
    System.out.println("Caught  Exception from  Thread:" + t.getName());
  }
}

public class Main {
  public static void main(String[] args) {
    CatchAllThreadExceptionHandler handler = new CatchAllThreadExceptionHandler();

    // Set an uncaught exception handler for main thread
    Thread.currentThread().setUncaughtExceptionHandler(handler);

    // Throw an exception
    throw new RuntimeException();
  }
}

上面的代码生成以下结果。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Java 当前线程》
文章链接:https://zhuji.vsping.com/293712.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。