老师,这章节实在听得迷糊 请指点

来源:7-13 join中断

qq_改成什么名字呢_0

2019-10-29

您的课程,这次是第二遍过一遍…就这一章节 我听了十来遍 还是听不懂咋回事
还请指教

图片描述
您一直强调 跟之前的不一样,我就一直迷糊…
上图图跟 以下代码
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
以上 wait跟 join写在主线程当中 当然是主线程抛的异常…难道wait不一样吗

我总结下 老师你的意思: 主线程中关闭 join子线程的时候,因为主线程必须等待子线程,所以 不可能在正常运行的主线程中 发送中止状态到 子线程 ,
而是
(第一步)在子线程当中,中止主线程 自然到了catch块
(第二步)在catch块正常运行代码,发送中断消息给子线程关闭

是这个意思吗???????

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块正常运行代码,发送中断消息给子线程关闭

对的,就是这个意思,因为主线程被中断的时候,有责任把它生产出来的子线程都终止。

1
0

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程