zoukankan      html  css  js  c++  java
  • 外部线程停止Java子线程的方法

    一、Thread.stop()
    官方不推荐,Because it is inherently unsafe.


    二、方式一
    1. 线程类示例

    public class ThreadT1 implements Runnable {
        private Thread threadThis;
    
        public void start() {
            threadThis = new Thread(this);
            threadThis.start();
        }
    
        public void stop() {
            threadThis = null;
        }
    
        public void run() {
            Thread thisThread = Thread.currentThread();
            while (threadThis == thisThread) {
            System.out.println("lalala~ ");
            // DO YOUR WORK !
        }
        System.out.println("stopped!!!");
        }
    }
                


    2. 使用示例

    ThreadT1 th1 = new ThreadT1();
    th1.start(); //新建线程并启动
    th1.stop(); //停止这个线程


    三、方式二
    1. 线程类示例

    public class ThreadT2 extends Thread {
        private boolean stop = false;
    
        public void stopByMark() {
            stop = true;
        }
    
        public void run() {
            while (!stop) {
            System.out.println("lalala~ ");
            // DO YOUR WORK !
        }
        System.out.println("stopped!!!");
        }
    
    }


    2.使用示例

    ThreadT2 th2 = new ThreadT2();
    th2.start(); //新建线程并启动
    th2.stopByMark(); //停止这个线程


    附、关于Thread.interrupt()
    通过这个方式也能停止线程。
    前提条件:

    public void run(){
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) { //必须存在捕获InterruptedException的方法,且发生了该    抛出就调用stop方法。
        e.printStackTrace();
        stopByMark();
        }
    }
  • 相关阅读:
    暑假日报-35
    非确定性有穷状态决策自动机练习题Vol.1 题解 & 总结
    loj数列分块入门 1~9
    第12周作业
    第二阶段考试
    UOJ NOI Round 4
    事件
    爬楼梯
    构造函数输出
    比较版本号大小
  • 原文地址:https://www.cnblogs.com/yoyotl/p/7873122.html
Copyright © 2011-2022 走看看