温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java 停止线程

发布时间:2020-08-09 23:03:38 来源:ITPUB博客 阅读:199 作者:soug 栏目:建站服务器

stop()已经过时.

停止线程:run()方法结束。

开启多线程运行,通常代码都是循环结构。

只要控制住循环,就可以让run()结束,也就结束了线程。

java 停止线程
class StopThread implements Runnable {    private boolean flag = true;
    @Override    public void run() {        while (flag) {
            System.out.println(Thread.currentThread().getName() + "...run");
        }
    }    public void changeFlag() {
        flag = false;
    }
}public class StopThreadDemo {    public static void main(String[] args) {
        StopThread st = new StopThread();
        Thread t1 = new Thread(st);
        Thread t2 = new Thread(st);
        t1.start();
        t2.start();        int num = 0;        while (true) {            if (num++ == 60) {
                st.changeFlag();                break;
            }
            System.out.println(Thread.currentThread().getName() + "......" + num);
        }
    }
}
java 停止线程

特殊情况:当线程处于冻结状态就不会读取到标记,那么线程也就不会结束。

当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除,强制让线程恢复到运行状态中来,这样就可以操作标记让线程结束。

Thread类中提供了该方法:interrupt();

java 停止线程
class StopThread implements Runnable {    private boolean flag = true;
    @Override    public synchronized void run() {        while (flag) {            try {
                wait();
            } catch (InterruptedException e) {
                System.out.println(Thread.currentThread().getName() + "...Exception");
                flag = false;
            }
            System.out.println(Thread.currentThread().getName() + "...run");
        }
    }    public void changeFlag() {
        flag = false;
    }
}public class StopThreadDemo {    public static void main(String[] args) {
        StopThread st = new StopThread();
        Thread t1 = new Thread(st);
        Thread t2 = new Thread(st);
        t1.start();
        t2.start();        int num = 0;        while (true) {            if (num++ == 60) {//                st.changeFlag();                t1.interrupt();
                t2.interrupt();                break;
            }
            System.out.println(Thread.currentThread().getName() + "......" + num);
        }
        System.out.println("over");
    }
}
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI