老师,这章节实在听得迷糊 请指点
来源:7-13 join中断

qq_改成什么名字呢_0
2019-10-29
您的课程,这次是第二遍过一遍…就这一章节 我听了十来遍 还是听不懂咋回事
还请指教
您一直强调 跟之前的不一样,我就一直迷糊…
上图图跟 以下代码
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
以上 wait跟 join写在主线程当中 当然是主线程抛的异常…难道wait不一样吗
我总结下 老师你的意思: 主线程中关闭 join子线程的时候,因为主线程必须等待子线程,所以 不可能在正常运行的主线程中 发送中止状态到 子线程 ,
而是
(第一步)在子线程当中,中止主线程 自然到了catch块
(第二步)在catch块正常运行代码,发送中断消息给子线程关闭
是这个意思吗???????
import com.company.stopthreads.sd;
public class sd23 {
static int count=0;
static Object object =new Object();
static Thread main ;
public static void main(String[] args) {
main = Thread.currentThread();
Runnable runnable = new xianc();
Thread thread1 = new Thread(runnable);
thread1.start();
//5秒关闭 xianc子线程
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
main.interrupt();
}
}).start();
try {
thread1.join();
} catch (InterruptedException e) {
System.out.println("我可以被运行了,我被中止了");
thread1.interrupt();
e.printStackTrace();
}
}
static class xianc implements Runnable{
@Override
public void run() {
synchronized (object) {
while(true&&!Thread.currentThread().isInterrupted()){
count++;
System.out.println(count);
}
}
}
}
}
1回答
-
悟空
2019-10-29
(第一步)在子线程当中,中止主线程 自然到了catch块
(第二步)在catch块正常运行代码,发送中断消息给子线程关闭对的,就是这个意思,因为主线程被中断的时候,有责任把它生产出来的子线程都终止。
10
相似问题