丶老鸟 2023-09-14 17:30 采纳率: 71.4%
浏览 4

线程问题,使用守护线程解决问题。

img


线程问题,使用守护线程解决问题。线程问题,使用守护线程解决问题。

img

img

img

  • 写回答

2条回答 默认 最新

  • 奋斗的小杨 2023-09-14 17:40
    关注

    以下是一个Java实现,使用了守护线程来实现线程1的停止。

    import java.util.Random;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            // 创建一个随机数生成器
            Random random = new Random();
    
            // 创建一个线程,用于随机打印数字
            Thread thread1 = new Thread(() -> {
                while (!Thread.currentThread().isInterrupted()) {
                    // 生成一个随机数字并打印
                    int num = random.nextInt(100);
                    System.out.println(num);
    
                    // 等待一段时间再继续打印
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // 如果线程被中断,则退出循环
                        break;
                    }
                }
            });
    
            // 将线程1设置为守护线程
            thread1.setDaemon(true);
    
            // 创建一个线程,用于接收控制台输入
            Thread thread2 = new Thread(() -> {
                Scanner scanner = new Scanner(System.in);
                while (true) {
                    // 等待用户输入
                    String input = scanner.nextLine();
    
                    // 如果用户输入了“q”,则停止打印数字
                    if (input.equals("q")) {
                        // 中断线程1
                        thread1.interrupt();
                        break;
                    }
                }
            });
    
            // 启动两个线程
            thread1.start();
            thread2.start();
        }
    }
    

    在这个实现中,我们使用 Thread.currentThread().isInterrupted() 来检查线程1是否被中断,如果是,则退出循环。我们还将线程1设置为守护线程,这意味着当没有非守护线程在运行时,它会自动退出。这样,当用户输入“q”并停止线程2时,线程1也会自动退出。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog