zoukankan      html  css  js  c++  java
  • [javaSE] 多线程(守护线程)

    我们一般使用多线程,都是while的死循环,想要结束线程,只需退出死循环即可

    当线程中调用了sleep()方法或者wait()方法,当前的线程就会进入冻结状态,这个线程就结束不了

    调用Thread对象的interrupt()方法,可以强制解冻,此时run()方法中需要捕获到InterruptException异常,然后进行处理,就可以关闭线程了

    调用Thread对象的setDaemon()方法,参数:true

    守护线程是后台线程,当前台线程全都结束以后,后台线程自动结束

    class Ticket implements Runnable {
        private int nums = 100;
    
        @Override
        public void run() {
    
            while (true) {
                synchronized (this) {
                    if (nums > 0) {
                        try {
                            Thread.sleep(100);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "==="
                                + (nums--));
                    }else{
                        break;
                    }
    
                }
            }
        }
    
    }
    
    public class TicketDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Ticket ticket = new Ticket();
            Thread t1=new Thread(ticket);
            Thread t2=new Thread(ticket);
            t1.setDaemon(true);
            t2.setDaemon(true);
            t1.start();
            t2.start();
            
            //主线程执行1秒就结束,其他守护线程还没走完也会结束
            while(true){
                try {
                    Thread.sleep(1000);
                    break;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
  • 相关阅读:
    JavaScript等比例缩放图片
    乐器的研究
    乐器的研究
    单位的理解
    单位的理解
    那些狗,那些人
    Opencv+Zbar二维码识别(标准条形码/二维码识别)
    二维码解码器Zbar+VS2012开发环境配置
    条形码、二维码的区别和组成结构介绍
    Caffe-Windows下遇到过的问题、技巧、解决方案
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5571221.html
Copyright © 2011-2022 走看看