zoukankan      html  css  js  c++  java
  • java多线程快速入门(十九)

    如何停止线程

      1、使用stop方法强行终止线程(这个方法不推荐使用,可能会出现业务操作未执行完,线程中断了)

    package com.cppdy;
    
    class MyThread15 extends Thread{
    
        @Override
        public synchronized void run() {
            while(true) {
                try {
                    wait();
                } catch (Exception e) {
                    
                }
                //如果这里有非常重要的代码块,是不是就出现问题了
                System.out.println("Thread run------");
            }
        }
        
    }
    
    public class ThreadDemo15 {
    
        public static void main(String[] args) throws Exception {
            MyThread15 mt = new MyThread15();
            Thread thread1 = new Thread(mt);
            Thread thread2 = new Thread(mt);
            thread1.start();
            thread2.start();
            int count=0;
            while(true) {
                System.out.println("Main run------");
                Thread.sleep(100);
                if(count==30) {
                    thread1.stop();
                    thread2.stop();
                    break;
                }
                count++;
            }
        }
    
    }
    View Code

      2、使用interrupt方法中断线程(将业务操作执行完后再中断线程)

    package com.cppdy;
    
    class MyThread15 extends Thread{
    
        @Override
        public synchronized void run() {
            while(true) {
                try {
                    wait();
                } catch (Exception e) {
                    
                }
                //如果这里有非常重要的代码块,是不是就出现问题了
                System.out.println("Thread run------");
            }
        }
        
    }
    
    public class ThreadDemo15 {
    
        public static void main(String[] args) throws Exception {
            MyThread15 mt = new MyThread15();
            Thread thread1 = new Thread(mt);
            Thread thread2 = new Thread(mt);
            thread1.start();
            thread2.start();
            int count=0;
            while(true) {
                System.out.println("Main run------");
                Thread.sleep(100);
                if(count==30) {
                    thread1.interrupt();
                    thread2.interrupt();
                    break;
                }
                count++;
            }
        }
    
    }
    View Code

      3、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止

    package com.cppdy;
    
    class MyThread15 extends Thread{
    
        public volatile boolean flag=true;
        
        @Override
        public synchronized void run() {
            while(flag) {
                try {
                    
                } catch (Exception e) {
                    setFlag(flag);
                }
                System.out.println("Thread run------");
            }
        }
        
        public void setFlag(boolean flag) {
            this.flag=flag;
        }
        
    }
    
    public class ThreadDemo15 {
    
        public static void main(String[] args) throws Exception {
            MyThread15 mt = new MyThread15();
            Thread thread1 = new Thread(mt);
            Thread thread2 = new Thread(mt);
            thread1.start();
            thread2.start();
            int count=0;
            while(true) {
                System.out.println("Main run------");
                Thread.sleep(100);
                if(count==30) {
                    mt.setFlag(false);
                    break;
                }
                count++;
            }
        }
    
    }
    View Code
  • 相关阅读:
    Linux 安装JDK Tomcat MySQL(使用Mac远程访问)
    Linux 基础
    IntelliJ IDEA 新建项目
    Android Studio|IntelliJ IDEA 常用快捷键(Mac|Window)
    C 进制 类型说明符 位运算 char类型
    C 函数
    C 流程控制
    113路径总和II
    111.二叉树的最小深度
    110.平衡二叉树
  • 原文地址:https://www.cnblogs.com/jiefu/p/10017595.html
Copyright © 2011-2022 走看看