一個(gè)語(yǔ)句可以由不同的線(xiàn)程在不同的時(shí)間執(zhí)行。
Thread類(lèi)靜態(tài)方法currentThread()返回調(diào)用此方法的Thread對(duì)象的引用。
考慮下面的語(yǔ)句:
Thread t = Thread.currentThread();
該語(yǔ)句將執(zhí)行上述語(yǔ)句的線(xiàn)程對(duì)象的引用分配給變量t。
下面的代碼演示了如何使用currentThread()方法。
兩個(gè)不同的線(xiàn)程調(diào)用CurrentThread類(lèi)的run()方法中的Thread.currentThread()方法。
該程序只打印正在執(zhí)行的線(xiàn)程的名稱(chēng)。
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è)類(lèi)時(shí),JVM啟動(dòng)一個(gè)名為main的線(xiàn)程,它負(fù)責(zé)執(zhí)行main()方法。
我們可以處理線(xiàn)程中拋出的未捕獲異常。
它使用實(shí)現(xiàn)java.lang.Thread.UncaughtExceptionHandler接口的類(lèi)的對(duì)象來(lái)處理。
接口被定義為T(mén)hread類(lèi)中的嵌套靜態(tài)接口。
下面的代碼顯示了一個(gè)類(lèi),它可以用作線(xiàn)程的未捕獲異常處理程序。
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é)果。
更多建議: