多线程深入话题

2020-12-10  本文已影响0人  曾梦想仗剑天涯

优雅的停止线程

//实现线程柔和的停止
package com.company;
public class ThreadStop {
    public static boolean flag = true;
    public static void main(String[] args) throws Exception {
        new Thread(() -> {
            long num = 0;
            while (flag) {
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "正在执行,num = " + num++);
            }
        }, "线程").start();
        Thread.sleep(200);
        flag = false;
    }
}

后台守护线程

//使用守护线程
package com.company;
public class GuardianThread {
    public static void main(String[] args) {
        Thread userThread = new Thread(() -> {
            for (int x = 0; x < 10; x ++) {
                System.out.println(Thread.currentThread().getName() + "、x = " + x);
            }
        }, "用户线程");
        Thread daemonThread = new Thread(() -> {
            for (int x = 0; x < Integer.MAX_VALUE; x ++) {
                System.out.println(Thread.currentThread().getName() + "、x = " + x);
            }
        }, "守护线程");
        daemonThread.setDaemon(true);
        userThread.start();
        daemonThread.start();
    }
}

volatile关键字

此图来源于李兴华老师
上一篇下一篇

猜你喜欢

热点阅读