java中线程的几种状态和停止线程的方法

1.线程的状态图

QQ截图20181226161353

需要注意的是:线程调用start方法是使得线程到达就绪状态而不是运行状态


2.停止线程的两种方法

1)自然停止:线程体自然执行完毕

2)外部干涉:通过线程体标识

  1.线程类中定义线程体能够使用的标识

  2.线程体使用该标识

  3.提供对外的方法改变该标识

  4.外部根据条件调用该方法即可

ThreadStop.java:

package 多线程;

public class ThreadStop {

    public static void main(String[] args) {
        //真实角色
        Study s = new Study();
        //匿名代理
        new Thread(s).start();
        
        //外部干涉
        for(int i=1;i<=100;i++) {
            if(i==50) {
                s.stop();
            }
            System.out.println("main--->"+i);
        }
    }

}

class Study implements Runnable{

    //线程体类中定义线程体能够使用的标识
    private boolean flag=true;
    private int x=1;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        //线程体改变该标识
        while(flag) {
            System.out.println("Study"+x+"秒");
            x++;
        }
    }
    //对外提供方法改变标识
    public void stop() {
        this.flag=false;
    }
    
}

注意:代理类系统自动提供的stop方法不要使用,要用stop的话,自己在线程类里面写一个,因为代理类系统自动提供的stop已经过时,存在不安全性问题


posted @ 2018-12-26 16:43  西*风  阅读(1633)  评论(0编辑  收藏  举报