Java线程关闭的方式
1.使用状态位
public class CloseThread extends Thread {
boolean flag = true;
int index=0;
@Override
public void run() {
while (flag){
System.out.println(index);
index++;
if(index==5){
stopThread();
}
}
}
public void stopThread(){
flag = false;
}
public static void main(String[] args) {
CloseThread ct = new CloseThread();
ct.start();
// for (int i =0 ; i < 6; i++){
// System.out.println(i);
// }
// ct.stopThread();
}
}
2.通过关闭资源的方式,让异常处理部分去修改flag
public class CloseThread1 extends Thread {
boolean flag = true;
Scanner sc = new Scanner(System.in);
@Override
public void run() {
while (flag){
try{
sc.next();
}catch (Exception e){
flag = false;
System.out.println("线程停止");
}
}
}
public static void main(String[] args) {
CloseThread1 t = new CloseThread1();
t.start();
for (int i = 0; i <= 5; i++){
System.out.println(i);
}
t.sc.close();//通过关闭资源的方式,让异常处理部分去修改flag
}
}
3.创造外部因素,使线程抛出异常
public class CloseThread2 extends Thread {
boolean flag = true;
@Override
public void run() {
while (flag){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {//线程中断异常
flag = false;
System.out.println("线程停止");
}
}
}
public static void main(String[] args) {
CloseThread2 c = new CloseThread2();
c.start();
//创造外部因素,使线程抛出异常
c.interrupt();
}
}
注:仅供个人学习理解