在Java中,處理線程中斷的方法如下:
Thread
類或實現Runnable
接口。在這兩種情況下,都需要重寫run()
方法,該方法包含線程執行的代碼。繼承Thread
類的示例:
class MyThread extends Thread {
@Override
public void run() {
// 線程執行的代碼
}
}
實現Runnable
接口的示例:
class MyRunnable implements Runnable {
@Override
public void run() {
// 線程執行的代碼
}
}
run()
方法中,使用try-catch
語句捕獲InterruptedException
異常。當線程被中斷時,會拋出此異常。在catch
塊中,可以編寫處理中斷的邏輯,例如設置線程的中斷狀態為false
,或者執行其他清理操作。繼承Thread
類的示例:
class MyThread extends Thread {
@Override
public void run() {
try {
// 線程執行的代碼
} catch (InterruptedException e) {
// 處理中斷的邏輯
Thread.currentThread().interrupt(); // 重新設置中斷狀態
}
}
}
實現Runnable
接口的示例:
class MyRunnable implements Runnable {
@Override
public void run() {
try {
// 線程執行的代碼
} catch (InterruptedException e) {
// 處理中斷的邏輯
Thread.currentThread().interrupt(); // 重新設置中斷狀態
}
}
}
start()
方法啟動線程。如果需要檢查線程是否已被中斷,可以使用isInterrupted()
方法。示例:
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
try {
Thread.sleep(1000); // 讓新線程執行一段時間
} catch (InterruptedException e) {
e.printStackTrace();
}
if (myThread.isInterrupted()) {
System.out.println("線程已被中斷");
} else {
System.out.println("線程未中斷");
}
}
}
注意:在捕獲InterruptedException
異常后,建議重新設置線程的中斷狀態,以便其他代碼或線程能夠檢測到中斷。