Java 当前线程

由 chalex 创建,小路依依 最后一次修改 2017-01-09

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();
  }
}

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



W3Cschool学编程上微课-边学边练
二维码
建议反馈
二维码