日志文章

2019-12-25 aflfte2011

线程的终止操作方法

package com.aflfte.state;
/**
 * 终止线程的两种方式
 * 1.线程正常执行完毕
 * 2.外部干涉:加入标识判断终止
 *
 * 不要使用Stop destroy
 * @author root
 *
 */
public class TerminateThread implements Runnable {
    //1.加入标识,标记线程体是否可以运行
    private boolean flag=true;
    private String name;
    public TerminateThread(String name) {
        super();
        this.name = name;
    }
    @Override
    public void run() {
        //2.关联标识为true->运行;false->终止
        int i=0;
        while(flag) {
            System.out.println(name+"-->"+i);
            i++;
        }
        
    }
    //3.对外提供方法改变标识
    public void terminate() {
        this.flag=false;
    }
    
    public static void main(String[] args) {
        TerminateThread tt=new TerminateThread("张三");
        new Thread(tt).start();
        for(int i=0;i<100;i++) {
            if(i==88) {
                tt.terminate();//线程的终止操作
                System.out.println("tt game over!");
            }
            System.out.println("main-->"+i);
        }
    }

}

« 线程阻塞(sleep的使用) | lambda表达式用法»