线程的停止有两种方式:
第一种方式:线程体自己执行完毕,比如说里面有个循环,或者就几行代码,或者调用方法,调用完了就结束了。这是正常执行完毕。
第二种方式:想法设法停止那些它不能自己停止的线程,一般来说就是那些没有次数或者死循环,在jdk里面提供了stop方法,但已经被过时,被jdk废弃,替换为 只是修改一些变量以指示目标线程应该停止运行的代码。
案例
package com.cb.thread.day02;
/*
* 终止线程
* 1.线程正常执行完毕-->次数
* 2.外部干涉-->加入标识
*
* 不要使用stop destroy,这样不安全
*/
public class TerminateThread implements Runnable{
//1.加入标识 标记线程是否可以运行
private boolean flag = true;
private String name;
public TerminateThread(String name) {
this.name = name;
}
@Override
public void run() {
//2.关联标识,true -->运行 false-->停止
int i= 0;
while (flag) {
System.out.println(name +"-->"+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 < 99; i++) {
if (i==88) {
tt.terminate();//线程的终止
System.out.println("科比 game over");
}
System.out.println("maim-->"+i);
}
}
}
4万+

被折叠的 条评论
为什么被折叠?



