java多线程---停止线程

Posted tangquanbin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程---停止线程相关的知识,希望对你有一定的参考价值。

 @Deprecated
    public final void stop() 

  jdk源码中Thread的stop()方法已经被弃用了。那么怎么停止线程的呢?

thread.interrupt();这就是需要用到的方法

一般建议使用抛异常的方法来实现停止线程。因为在catch块里可对异常信息进行相关处理。
如下:
public class StopThread extends Thread{

    /**
     * 停止一个线程可用Thread.stop(),但这个方法是不安全的,被弃用的。别用
     * 还可以用Thread.interrupt()
     */
    @Override
    public void run() {
        /**
         * 在沉睡中停止:如果线程在睡眠中被interrupt,将抛出异常java.lang.InterruptedException: sleep interrupted
         */
      /*try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }*/

        /**
         * 使用“异常法”停止线程
         */
        try {
            for (int i=0;i<500000;i++){
               if (this.isInterrupted()) {
                   System.out.println("停止状态");
                   throw new InterruptedException();
               }
               System.out.println("i=" + (i + 1));
           }
            System.out.println("===for end===");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    /**
     * 测试线程是否是中断状态
     * isInterrupted  不清除状态标志
     * interrupted    清除状态标志
     * @param args
     * @throws InterruptedException
     */
    public static void main(String[] args) throws InterruptedException {
        StopThread thread = new StopThread();
        thread.start();
        Thread.sleep(1000);
        thread.interrupt();
//        System.out.println("interrupted===================="+thread.interrupted());
//        System.out.println("interrupted===================="+thread.interrupted());
//        System.out.println("isInterrupted===================="+thread.isInterrupted());
//        System.out.println("isInterrupted===================="+thread.isInterrupted());
    }

}

  




以上是关于java多线程---停止线程的主要内容,如果未能解决你的问题,请参考以下文章

进阶Java编程多线程深入话题

MySQL系列:kafka停止命令

java多线程之停止线程

多线程的wait/notify的使用

java多线程远程协作(狂神说)附上课代码

java多线程---停止线程