zoukankan      html  css  js  c++  java
  • Java 线程结束 & 守护线程

    /*
    停止线程:
    1,stop方法。
    
    2,run方法结束。
    
    怎么控制线程的任务结束呢?
    任务中都会有循环结构,只要控制住循环就可以结束任务。
    
    控制循环通常就用定义标记来完成。
    
    但是如果线程处于了冻结状态,无法读取标记。如何结束呢?
    
    可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具备cpu的执行资格。 
    
    当时强制动作会发生了InterruptedException,记得要处理
    
    
    */
    class StopThread implements Runnable
    {
        private boolean flag = true;
        public synchronized void run()
        {
            while(flag)
            {
                try
                {
                    wait();//t0 t1
                }
                catch (InterruptedException e)
                {
                    System.out.println(Thread.currentThread().getName()+"....."+e);
                    flag = false;
                }
                
                System.out.println(Thread.currentThread().getName()+"......++++");
            }
        }
        public void setFlag()
        {
            flag = false;
        }
    }
    
    
    
    class StopThreadDemo 
    {
        public static void main(String[] args) 
        {
            StopThread st = new StopThread();
    
            Thread t1 = new Thread(st);
            Thread t2 = new Thread(st);
    
            t1.start();
            t2.setDaemon(true);  //守护线程,后台线程
            t2.start();
    
    
            int num = 1;
            for(;;)
            {
                if(++num==50)
                {
    //                st.setFlag();
                    t1.interrupt();
    //                t2.interrupt();
                    break;
                }
                System.out.println("main...."+num);
            }
    
            System.out.println("over");
        }
    }
  • 相关阅读:
    VI中的批量替换--转载
    Zookeeper集群
    Zookeeper实现Master选举(哨兵机制)
    分布式session之token解决方案实现
    浏览器
    分布式session之redis解决方案实现
    服务器操作常用
    Nginx安装教程(Centos6.8)
    分布式锁(Redis实现)
    开发总结
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8309666.html
Copyright © 2011-2022 走看看