Java 當(dāng)前線程

2018-02-28 14:30 更新

Java線程教程 - Java當(dāng)前線程


一個(gè)語句可以由不同的線程在不同的時(shí)間執(zhí)行。

Thread類靜態(tài)方法currentThread()返回調(diào)用此方法的Thread對(duì)象的引用。

考慮下面的語句:

Thread  t = Thread.currentThread();

該語句將執(zhí)行上述語句的線程對(duì)象的引用分配給變量t。

例子

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

兩個(gè)不同的線程調(diào)用CurrentThread類的run()方法中的Thread.currentThread()方法。

該程序只打印正在執(zhí)行的線程的名稱。

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

上面的代碼生成以下結(jié)果。

當(dāng)你運(yùn)行一個(gè)類時(shí),JVM啟動(dòng)一個(gè)名為main的線程,它負(fù)責(zé)執(zhí)行main()方法。


處理線程中未捕獲的異常

我們可以處理線程中拋出的未捕獲異常。

它使用實(shí)現(xiàn)java.lang.Thread.UncaughtExceptionHandler接口的類的對(duì)象來處理。

接口被定義為Thread類中的嵌套靜態(tài)接口。

下面的代碼顯示了一個(gè)類,它可以用作線程的未捕獲異常處理程序。

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

上面的代碼生成以下結(jié)果。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)