Java 当前线程
2018-02-28 14:30 更新
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();
}
}
上面的代码生成以下结果。

以上内容是否对您有帮助:

免费 AI IDE


更多建议: