线程问题,使用守护线程解决问题。线程问题,使用守护线程解决问题。
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也会自动退出。解决 无用评论 打赏 举报
悬赏问题
- ¥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