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
执行完毕!!
* */