Contents
20.5. 线程停止¶
线程体中的run()方法结束,线程进入死亡状态,线程就停止了。但是有些业务比较复杂, 例如想开发一个下载程序,每隔一段执行一次下载任务,下载任务一般会在由子线程执行的,休眠一段时间再执 行。这个下载子线程中会有一个死循环,但是为了能够停止子线程,设置一个结束变量。
Thread_Demo.java
package com.a51work.cn;
import com.sun.xml.internal.bind.v2.TODO;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Thread_Demo {
private static String command = "";
public static void main(String[] args) {
// 创建线程t1,参数是一个线程执行对象Runner
Thread t1 = new Thread(() -> {
//一直循环,直到满足条件时才停止
while (!command.equalsIgnoreCase("exit")) {
//线程开始工作
//TODO
System.out.println("下载中..............");
try {
//线程休眠
Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
//线程执行结束
System.out.println("执行完毕!!");
});
//开始线程t1
t1.start();
try (
//System.in是一个很特殊的输入流,能够从控制台(键盘)读取字符
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir);
) {
//从键盘接收一个字符串的输入
command = in.readLine();
} catch (IOException e) {
}
}
}
/*
下载中..............
下载中..............
exit
执行完毕!!
* */