2021-04-18 11:25  阅读(107)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-thread-multiple.html

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

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

2021041811217_1.png

当你运行一个类时,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();
      }
    }
    

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

2021041811210_2.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 当前线程
上一篇
Java 线程生产者/消费者
下一篇
Java 线程休眠