启动两个线程,用另一个线程以通知的终止另一个线程

news2024/10/6 14:28:57

要求:

  1. 在main方法中启动两个线程
  2. 第一个线程循环随机打印100以内的整数
  3. 直到第二个线程从键盘读取了”Q“命令

实现代码如下:

public class Homework01 {
    public static void main(String[] args) {
        THk tHk = new THk();
        tHk.start();
        Thk2 thk2 = new Thk2(tHk);
        thk2.start();
    }
}

//第一个线程循环打印1——100之间的数字
class THk extends Thread {
    Random rm = new Random();
    boolean flag = true;

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    @Override
    public void run() {
        while (flag) {
            System.out.println((int) rm.nextInt(100) + 1);
//                System.out.println((int)rm.nextInt()*100+1);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Thk线程已经退出~");
    }
}

//直到第二个线程从键盘读取了“Q”命令
class Thk2 extends Thread {
    Scanner scanner = new Scanner(System.in);
    private THk tHk;

    public Thk2(THk tHk) {
        this.tHk = tHk;
    }

    @Override
    public void run() {
        while (true) {
            //接受用户的输入
            System.out.println("请输入你的指令(Q)表示退出:");
            char key = scanner.next().toUpperCase().charAt(0);
            if (key == 'Q') {
                //已通知的方式结束a线程
                tHk.setFlag(false);
                System.out.println("Thk2退出~");
                break;
            }
        }
    }
}
public class Homework11 {
    public static void main(String[] args) {
        AA aa = new AA();
        BB bb = new BB(aa);
        aa.start();
        bb.start();
    }
}

class AA extends Thread {
    //该线程是实现不断打印100以内的整数
    Random rm = new Random();
    boolean flag = true;
    public void setFlag(){
        flag=false;
    }
    @Override
    public void run() {
        while (flag) {
            System.out.println((int)rm.nextInt(100)+1);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("线程AA已经退出~");
    }
}
class BB extends Thread{
    //该线程是读取字符“Q”来终止线程AA
    Scanner sc = new Scanner(System.in);
    private AA aa;
    public BB(AA aa){
        this.aa=aa;
    }
    @Override
    public void run(){
        while(true){
            System.out.println("请输入字符“Q”来退出程序:");
            char key = sc.next().toUpperCase().charAt(0);
            if(key=='Q'){
                aa.setFlag();
            }
            System.out.println("线程BB已经退出~");
        }
    }
}

注意:在控制台输入字符的时候,需要按两次回车键,不然系统识别不到,还在一边继续等待输入,一边继续输出~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】操作系统以及虚拟机的安装与配置

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.操作系统的介绍 二.VMWare虚拟机的安装…

【算法题】割后面积最大的蛋糕

题目: 矩形蛋糕的高度为 h 且宽度为 w,给你两个整数数组 horizontalCuts 和 verticalCuts,其中: horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离 verticalCuts[j] 是从矩形蛋糕的左侧到第 j 个竖直切口的距离 请你…

宏定义实现offsetof

在C语言中,有这样一个特殊的宏,叫offsetof,它的功能是啥呢? 我们来看看它的介绍 它的功能是:返回一个结构体的成员的大小(相较于起始地址的偏移量) 引用代码:http://t.csdnimg.cn…

CS224W1.1——图机器学习介绍

文章目录 1. 介绍2. 主要问题3. 深度学习如何应用在图结构中4. 课程大纲 学习一下斯坦福CS224W的图机器学习(2021年),并做一下学习笔记,主要是研究方向与图神经网络相关。这次是第一次笔记,图片很多都是从斯坦福的PPT里…

【java学习—九】抽象类和抽象方法(3)

文章目录 1. 相关概念2. 如何定义抽象方法和抽象类3. 抽象类的作用4. 练习题4.1. 问题14.2. 问题2 1. 相关概念 抽象类:随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能…

如何在群晖Synology+Office实现多人编辑一个文件?

使用群晖Synology Office提升生产力:多人同时编辑一个文件 文章目录 使用群晖Synology Office提升生产力:多人同时编辑一个文件本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制…

潮玩宇宙:大逃杀模式的利与弊

在当今的游戏市场中,潮玩宇宙的概念越来越受到关注。这个以潮流玩具为主题的宇宙,不仅包含了众多类型的玩具和收藏品,还融合了各种独特的文化形式和娱乐内容。其中,大逃杀模式作为一种流行的游戏模式,在潮玩宇宙中占据…

倒计时 1 天!神策 2023 数据驱动大会「参会指南」,请收藏

「新旅程、新经营,决胜数字化」,神策 2023 数据驱动大会明日召开!大会聚焦客户经营与客户旅程主题,特邀数十位海内外专家、知名企业代表、资深投资人,分享行业观点与趋势洞察,共同推动中国企业数字化客户经…

Mysql8.1.0 windows 绿色版安装

Mysql8.1.0 windows 绿色版安装 目录 Mysql8.1.0 windows 绿色版安装1、下载mysql8.1.0_windows(mysql-8.1.0-winx64.zip)2、解压到安装目录3、添加环境变量4、新建mysql配置文件5、安装mysql服务6、初始化数据文件7、启动mysql服务8、进入mysql管理模式…

深度学习:张量 介绍

张量[1]是向量和矩阵到 n 维的推广。了解它们如何相互作用是机器学习的基础。 简介 虽然张量看起来是复杂的对象,但它们可以理解为向量和矩阵的集合。理解向量和矩阵对于理解张量至关重要。 向量是元素的一维列表: 矩阵是向量的二维列表: 下标…

JAVA面试题简单整理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、重载和重写的区别一、&和&&的区别一、get和post请求的区别 delete、put一、cookie和session的区别一、Autowired和Resource区别一、”和equals…

wait 和 notify 这个为什么要在 synchronized 代码块中?

wait 和 notify wait 和 notify 用来实现多线程之间的协调,wait 表示让线程进入到阻塞状态,notify 表示让阻塞的线程唤醒。 wait 和 notify 必然是成对出现的,如果一个线程被 wait()方法阻塞,那么必然需要另外一个线程通过 noti…

C语言_文件_进程_进程间通讯 常用函数/命令 + 实例

文件相关命令: ps -aux|grep init? //搜索包含init名称的进程 top //linux下的资源管理器(动态)//open 返回的int 是给后面的读/写/光标移动 用的fd,没有open就不能进行后面的操作; int op…

大数据Flink(一百零三):SQL 表值聚合函数(Table Aggregate Function)

文章目录 SQL 表值聚合函数(Table Aggregate Function) SQL 表值聚合函数(Table Aggregate Function) Python UDTAF,即 Python TableAggregateFunction。Python UDTAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等,与…

【micro ros】快速上手:在 RT-Thread上运行 micro ros

文章目录 快速上手micro ros && RT-Thread(serial和udp方式)1.背景介绍2.工程准备工作2.1 克隆 RT-Thread主仓2.2 克隆 env-windows 3.编译准备工作3.1 python & cmake安装3.2 scons工具安装3.3 GNU make安装3.4 Fastgithub安装 4.工程配置4…

[SQL开发笔记]LIKE操作符:在 WHERE 子句中搜索列中的指定模式

一、功能描述: LIKE操作符:用于在 WHERE 子句中搜索列中的指定模式。 二、LIKE操作符语法详解: LIKE 语法 SELECT column1, column2,…FROM table_nameWHERE column LIKE pattern; 参数说明: (1)colum…

全球生物气候产品2.5m和30s分辨率

简介 生物气候是指生物和气候相互作用的结果,包括植物和动物对气候的影响,以及气候对生物的影响。生物气候研究的是生物、气候、土地和水等自然要素之间相互作用的过程,旨在探讨它们是如何互动并导致生态系统的变化的。生物气候对于理解全球…

C#,数值计算——分类与推理,基座向量机(SVM,Support Vector Machines)的计算方法与源程序

把 Support Vector Machines 翻译成 支持向量机 是书呆子翻译。基座向量机 不好吗。 1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Support Vector Machines /// </summary> public class Svm { priv…

上海亚商投顾:沪指震荡反弹 华为汽车、卫星通信板块再度爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一、市场情绪 三大指数早盘低开低走&#xff0c;深成指、创业板指一度跌超1%&#xff0c;午后集体拉升翻红。 华为汽车概念…

KMS在腾讯云的微服务实践助力其降本50%

背景介绍 KMS 是一家日本的游戏公司&#xff0c;主要经营游戏业务、数字漫画业务、广告业务、云解决方案业务等&#xff0c;出品了多款在日本畅销的漫画风游戏&#xff0c;同时有网络漫画专业厂牌&#xff0c;以内容创作为目标&#xff0c;拥有原创 IP 创作、游戏开发等多元化发…