14,多线程-停止线程

一般情况

package songyan;
/*
如何停止线程?
只有一种,run方法结束。
开启多线程运行,运行代码通常是循环结构。

只要控制住循环,就可以让run方法结束,也就是线程结束。

*/

class Demo implements Runnable{
    boolean flag=true;
    public void run()
    {
        while(flag)
        {            
            System.out.println(Thread.currentThread().getName()+"***run");
        }
    }
    public void changeFlag()
    {
        flag=false;
    }
}
public class test {
    public static  void main(String[] args)
    {
        Demo d= new Demo();
        Thread t= new Thread(d);
        t.start();
        
        int count =0;
        
        while(true)
        {
            count++;
            System.out.println("main***"+count);
            if(count==600)
            {
                d.changeFlag();
                break;
            }
            
        }
    }
}

特殊情况(线程冻结)

package songyan;
/*

特殊情况:
当线程处于了冻结状态。
就不会读取到标记。那么线程就不会结束。


当没有指定的方式让冻结的线程恢复到运行状态是,这时需要对冻结进行清除。
强制让线程恢复到运行状态中来。这样就可以操作标记让线程结束。


Thread类提供该方法 interrupt();

*/

class Demo implements Runnable{
    boolean flag=true;
    public synchronized void run()
    {
        while(flag)
        {            
            
            try {
                this.wait();
            } 
            catch (Exception e) 
            {
                System.out.println("jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
            }
            System.out.println("run ******888888888888888888888888888888888888*");
        }
    }
    public void changeFlag()
    {
        flag=false;
    }
}
public class test {
    public static  void main(String[] args)
    {
        Demo d= new Demo();
        Thread t= new Thread(d);
        t.start();
        
        int count =0;
        
        while(true)
        {
            count++;
            System.out.println("main***"+count);
            if(count==600)
            {
                d.changeFlag();
                t.interrupt();//中断线程(让线程重新获得运行资格)
                break;
            }
            
        }
    }
}
原文地址:https://www.cnblogs.com/exexex/p/8435077.html