• 技术文章 >java >java基础

    java停止线程的方式

    小妮浅浅小妮浅浅2021-07-07 10:01:52原创6406

    1、使用Interrupt来通知

    1

    while (!Thread.currentThread().isInterrupted() && more work to do) {     do more work    }

    首先通过 Thread.currentThread().isInterrupt() 判断线程是否被中断,随后检查是否还有工作要做。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    public class StopThread implements Runnable {

      

        @Override

        public void run() {

      

            int count = 0;

      

            while (!Thread.currentThread().isInterrupted() && count < 1000) {

      

                System.out.println("count = " + count++);

      

            }

      

        }

      

        public static void main(String[] args) throws InterruptedException {

      

            Thread thread = new Thread(new StopThread());

            thread.start();

            Thread.sleep(5);

            thread.interrupt();

        }

      

    }

    2、使用volatile标志一个字段,通过判断这个字段true/false退出线程

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    /**

     * 描述:     演示用volatile的局限:part1 看似可行

     */

    public class WrongWayVolatile implements Runnable {

      

        private volatile boolean canceled = false;

      

        @Override

        public void run() {

            int num = 0;

            try {

                while (num <= 100000 && !canceled) {

                    if (num % 100 == 0) {

                        System.out.println(num + "是100的倍数。");

                    }

                    num++;

                    Thread.sleep(1);

                }

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

      

        public static void main(String[] args) throws InterruptedException {

            WrongWayVolatile r = new WrongWayVolatile();

            Thread thread = new Thread(r);

            thread.start();

            Thread.sleep(5000);

            r.canceled = true;

        }

    }

    以上就是java停止线程的方式,希望对大家有所帮助。更多Java学习指路:Java基础

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java 线程
    上一篇:java throw和throws的区别 下一篇:java线程池的优缺点分析

    相关文章推荐

    • java线程池的工作队列有哪几个• 分页处理java多线程的数据• java多线程中的回调运用• python创建多线程的两种方法• python多线程如何自定义线程类?• python多线程线程锁如何使用

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网