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
  • 相关阅读:
    Java 将数字转为16进制,然后转为字符串类型 将空格去掉。终结版
    Java 将数字转为16进制,然后转为字符串类型
    Java 数组转字符
    Apple Reject
    NSInternalInconsistencyException
    svn报错cleanup failed–previous operation has not finished; run cleanup if it was interrupted的解决办法
    CSS伪类选择器 奇偶匹配nth-child(even)
    常用css代码(scss mixin)
    织梦网站给栏目添加自定义字段图文详解
    css怎么解决表格边框线重复问题
  • 原文地址:https://www.cnblogs.com/jiefu/p/10017595.html
Copyright © 2011-2022 走看看