java如让让子线程捕捉到异常时让主线程进行等待或者睡眠
时间: 2023-05-25 21:00:51 浏览: 53
在Java中,如果希望子线程在捕获到异常时让主线程进行等待或睡眠,可以使用以下方法:
1.使用join方法
可以在主线程中使用join方法来等待子线程执行完毕,如下所示:
```java
Thread t = new Thread(new Runnable() {
public void run() {
//子线程代码
}
});
t.start(); //启动子线程
try {
t.join(); //等待子线程执行完毕
} catch (InterruptedException e) {
e.printStackTrace();
}
```
在子线程发生异常时,主线程仍然会阻塞等待,直到子线程执行完毕。
2.使用wait和notify方法
可以在子线程中使用wait方法等待主线程发出通知,如下所示:
```java
public class MyThread extends Thread {
public boolean isDone = false;
public void run() {
try {
//子线程代码
} catch(Exception e) {
synchronized(this) { //加锁
isDone = true;
notify(); //通知主线程
}
}
}
}
MyThread t = new MyThread();
t.start(); //启动子线程
synchronized(t) { //加锁
while(!t.isDone) {
try {
t.wait(); //等待子线程完成或发生异常
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
```
当子线程发生异常时,会将isDone设置为true并通知主线程,主线程收到通知后会解除wait状态并继续执行。
以上两种方法都可以让主线程在捕获到子线程异常时进行等待或睡眠。