Java--守护线程

线程分守护线程和用户线程

class DaemonThread implements Runnable {

    @Override
    public void run() {
        System.out.println("进入了守护线程" + Thread.currentThread().getName());
        try {
            writeToFile();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("退出守护线程");
    }

    private void writeToFile() throws IOException, InterruptedException {
        File file = new File("D:" + File.separator + "daemon.txt");
        OutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream(file, true);
            Integer count = 0;
            while (count < 999) {
                outputStream.write(("\r\nword" + count).getBytes());
                System.out.println("守护线程" + Thread.currentThread().getName()
                        + "向文件中写入word" + count++);
                Thread.sleep(1000);
            }
        } finally {
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }
}

public class MyDaemonTest {

    public static void main(String[] args) {
        System.out.println("开始执行主线程");

        DaemonThread daemonThread = new DaemonThread();
        Thread thread=new Thread(daemonThread);
        thread.setDaemon(true);
        thread.start();

        Scanner scanner=new Scanner(System.in);
        scanner.next();

        System.out.println("结束执行主线程");
    }
}

执行main方法,启动了主函数和守护线程,然后阻塞等待控制条输入,在控制台中输入任意的数据即可停止阻塞状态。
执行情况:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/BtWangZhi/article/details/80796277