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();
                }
            }
        }
    
    }
  • 相关阅读:
    java 网络编程入门
    正确、安全地停止SpringBoot应用服务
    spring boot application.properties文件外部配置
    logback
    基本排序算法的总结
    jqury属性操作,特殊效果
    click事件和jquery选项卡
    jquery加载方式,选择器,样式操作
    css之定位
    css中设置background属性
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5571221.html
Copyright © 2011-2022 走看看