Java 多线程练习 (2024.8.12)

news/2024/9/11 3:44:33/ 标签: java, 开发语言

        MultiProcessingExercise1

java">package MultiProcessingExercise20240812;public class MultiProcessingExercise1 {public static void main(String[] args) {// 设置、获取线程名称// 如果使用继承Thread类的方式实现多线程,那么可以直接通过set和get方法进行设置和获取线程名称MyThread1 thread1 = new MyThread1(); // 这个类是直接继承的Thread类,可以直接用set和get方法thread1.setName("线程1");MyThread1 thread2 = new MyThread1(); // 这个类是直接继承的Thread类,可以直接用set和get方法thread2.setName("线程2");// 开启两条线程,发现多线程的set和get方法成功实现thread1.start();thread2.start();// 若不是用的直接继承Thread类实现多线程,那么则不能直接用set和get方法(不建议在实现类中写set和get方法)// 可以使用Thread中的静态方法:currentThread————返回对当前正在执行的线程对象的引用,然后再使用set和get方法// 用实现Runnable类创建Thread对象MyRunnable runnable1 = new MyRunnable();MyRunnable runnable2 = new MyRunnable();Thread thread3 = new Thread(runnable1, "线程3"); // 可以用构造方法给线程命名(相当于set方法了)Thread thread4 = new Thread(runnable2, "线程4");thread3.start();thread4.start();// 注:四条线程一起抢占CPU资源}
}

        MyThread1

java">package MultiProcessingExercise20240812;public class MyThread1 extends Thread {@Overridepublic void run() {for (int i = 0; i<= 100; i++) {System.out.println(this.getName() + ": " + i);}}
}

        MultiProcessingExercise2

java">package MultiProcessingExercise20240812;public class MultiProcessingExercise2 {public static void main(String[] args) {// 线程休眠// static void sleep(long millis) 使当前正在执行的线程停留(暂停执行)指定的毫秒数// 意义:主要是为了出让线程占用的CPU资源,让其他线程有机会执行,从而实现线程之间的轮换调用// 作用:// 1.假如某个任务需要等待资源准备(硬盘和内存的问题和CPU无关),通过线程休眠,可以避免CPU空转// 2.通过让线程休眠,避免某个线程长时间的占用CPU资源,从而降低CPU负载// 3.配合其他同步机制,线程休眠可以实现复杂的线程同步机制// 其作用主要是从效率和需求方面进行考虑的MyThread2 myThread1 = new MyThread2();MyThread2 myThread2 = new MyThread2();myThread1.setName("线程1");myThread2.setName("线程2");myThread1.start();myThread2.start();}
}

        MyRunnable

java">package MultiProcessingExercise20240812;public class MyRunnable implements Runnable {@Overridepublic void run() {for (int i = 0; i <= 100; i++) {System.out.println(Thread.currentThread().getName() + ": " + i);}}
}

 

        MyThread2

java">package MultiProcessingExercise20240812;public class MyThread2  extends Thread{@Overridepublic void run() {for (int i = 0; i <= 100; i++) {try{Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(getName() + "成功抢到CPU资源"); // 每一行语句后线程都会抢占CPU资源System.out.println(getName() + ": " + i);}}
}

        MultiProcessingExercise3

java">package MultiProcessingExercise20240812;public class MultiProcessingExercise3 {public static void main(String[] args) {// 线程的优先级// 两种调度线程的方式// 1.分时调度模型:所有CPU轮流使用CPU,平均分配每个线程占用CPU的时间片// 2.抢占式调度模型:优先让优先级高的线程使用CPU,若优先级相同,则随机选择;但是这并不绝对,只是优先级高的线程获取的CPU时间片相对较多// Java使用的是抢占式调度模型// 随机性:// 假如计算机只有一个CPU,那么CPU在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令// 所以说多线程程序的执行是有随机性,因为谁抢到CPU的使用权是不一定的(优先级高的抢占到CPU时间片概率高)// 优先级相关方法// final int getPriority() 返回该线程的优先级// final void setPriority(int newPriority) 更改该线程的优先级,默认是5,优先级的更改范围为1-10MyThread1 myThread1 = new MyThread1();MyThread1 myThread2 = new MyThread1();// 发现两个线程的默认优先级是5
//        System.out.println(myThread1.getPriority());
//        System.out.println(myThread2.getPriority());// 设置两个线程的优先级myThread1.setPriority(1);myThread2.setPriority(10);myThread1.setName("线程1");myThread2.setName("线程2");myThread1.start();myThread2.start();// 即使线程2的优先级远高于线程1,但是线程优先级只是概率问题,并不绝对,所以说有时线程1会比线程2先执行完毕,但是这只是小部分情况}
}

      

 

 

 

 

 


http://www.ppmy.cn/news/1508639.html

相关文章

Oracle ACE是什么缩写?

大家都知道&#xff0c;Oracle有个ACE 计划&#xff0c;旨在奖励和表彰个人对 Oracle 社区做出的贡献。 这些贡献主要包括两方面&#xff1a; 知识与经验分享&#xff0c;如撰写博客、书籍和文章&#xff1b;制作视频教程&#xff1b;为开源项目做贡献&#xff1b;编写代码&a…

10分钟学会Docker的安装和使用

Docker 是一个用于开发、发布和运行应用程序的开源平台。它通过提供轻量级的容器技术&#xff0c;使得应用程序可以在任何环境中一致地运行。以下是快速学会Docker的安装和使用的步骤。 1. 安装Docker 在Windows上安装 下载Docker Desktop&#xff1a; 访问Docker官网下载适用…

Java->双击Window批处理程序动态切换Java版本

JDK8 echo off chcp 65001 >nul :: 设置控制台编码为UTF-8&#xff0c;避免中文乱码:: 检查是否以管理员身份运行 openfiles >nul 2>&1 if %errorlevel% neq 0 (echo 请求管理员权限...powershell -Command "Start-Process cmd -ArgumentList /c %~fnx0 -Ve…

13.1 Python 正则表达式基础

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

苹果发布 AirPods Pro 2 测试版固件 搭配iOS 18新特性

苹果今天发布了AirPods Pro 2 的第三个测试版固件&#xff0c;包括 Lightning 和 USB-C 两个版本。更新后的固件版本号为 7A5266c&#xff0c;高于 7A5244b&#xff0c;目前可供开发者使用。这是苹果公司自 6 月份宣布 AirPods Pro 2 新功能以来发布的第三个固件更新。 作为iOS…

git拉取后,代码不见了,没有冲突覆盖,且,没有删除,看我是怎么找回的

git拉取后&#xff0c;代码不见了&#xff0c;没有冲突覆盖&#xff0c;且&#xff0c;没有删除 重点提醒 当你的代码丢失时&#xff0c;不要惊慌&#xff0c;首先尝试使用本地的历史记录和远程仓库来找回代码。如果这些方法不起作用&#xff0c;你可以考虑其他的救援工具或寻…

搭建高可用OpenStack(Queen版)集群(十)之部署分布式存储Ceph

一、Ceph知识点学习 Ceph知识点学习&#xff1a;https://www.cnblogs.com/happy-king/p/9207509.html 二、部署分布式存储Ceph 一&#xff09;设置yum源 在全部控制与计算节点设置epel与ceph yum源 epel源&#xff1a;repo安装包下载_开源镜像站-阿里云 ceph源&#xff1a;cep…

在亚马逊云科技上利用生成式AI开发用户广告营销平台

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何利用亚马逊云科技大模型托…

windows 版本Jenkins的Jenkinsfile中共享变量

场景 jenkins部署在windows服务器上的&#xff0c;需要在Jenkinsfile中获取命令执行的结果存入一个变量&#xff0c;然后在后续的执行中使用此变量 一开始想的是定义一个环境变量&#xff0c;如下所示&#xff0c; pipeline {agent anystages {stage(test) {steps {bat for /…

【网络】传输层TCP协议的报头和传输机制

目录 引言 报头和有效载荷 确认应答机制 超时重传机制 排序和去重 连接管理机制 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 TCP是传输层协议&#xff0c;全称传输控制协议。TCP报头中有丰富的字段以及协议本身会制定完善的策略来保证网络传输的可靠性。 TCP…

VIMA: General Robot Manipulation with Multimodal Prompts

发表时间&#xff1a;arXiv 2024年5月15日 论文链接&#xff1a;https://arxiv.org/pdf/2309.11499 作者单位&#xff1a;Xi’an Jiaotong University Motivation&#xff1a;机器人技术中的任务规范有多种形式&#xff0c;例如模仿一次性演示、遵循语言说明和达到目标。它们…

运动耳机哪个品牌好用?五款质量一流品牌推荐!

运动耳机无疑是运动爱好者的绝佳伴侣&#xff0c;让每一次挥汗如雨的瞬间都伴随着无与伦比的音乐盛宴与舒适的佩戴感受。特别是对于跑步爱好者而言&#xff0c;一款优秀的运动耳机更是不可或缺的装备。然而&#xff0c;市场上的运动耳机种类繁多&#xff0c;质量也千差万别&…

机器学习——逻辑回归(学习笔记)

目录 一、认识逻辑回归 二、二元逻辑回归&#xff08;LogisticRegression&#xff09; 1. 损失函数 2. 正则化 3. 梯度下降 4. 二元回归与多元回归 三、sklearn中的逻辑回归&#xff08;自查&#xff09; 1. 分类 2. 参数列表 3. 属性列表 4. 接口列表 四、逻辑回归…

怎么在网站底部添加站点地图?

在优化网站 SEO 时&#xff0c;站点地图&#xff08;Sitemap&#xff09;是一个非常重要的工具。它帮助搜索引擎更好地理解和抓取您的网站内容。幸运的是&#xff0c;从 WordPress 5.5 开始&#xff0c;WordPress 自带了站点地图生成功能&#xff0c;无需额外插件。下面将介绍如…

EPIC 数据库 Chronicles 的连接方式

EPIC 使用的是 IRIS 数据库&#xff0c;但是在 EPIC 内部&#xff0c;却有一个称为 Chronicles 的系统。 有关这个 Chronicles 的连接方式&#xff0c;请参考&#xff1a; Chronicles Chronicles 在 EPIC 内部被称为 DBMS&#xff0c;是 EPIC 的数据库管理系统。 我们可以认…

TDengine Cloud 助力智源未来,引领能源管理革新

在全球能源转型的大背景下&#xff0c;能源管理和储能技术的创新成为了各行业关注的焦点。随着能源需求的不断增加和对可再生能源的广泛应用&#xff0c;企业对高效、智能的能源管理解决方案的需求也在迅速增长。储能技术不仅能够平衡电力供应与需求&#xff0c;还能够在电网高…

如何高效记录并整理编程学习笔记?

如何高效记录并整理编程学习笔记&#xff1f; 笔记工具选择 1、Typora 轻量化&#xff0c;简单好用 2、 飞书云文档 手机电脑都可以看&#xff0c;随时同步笔记。 笔记结构设计 做好清晰的标题&#xff0c;按照知识去分类。 Java基础知识 开源框架 中间件 实践与复习策略 只…

10、java程序流程控制之二:分支语句(switch-case结构)、循环结构(for循环)(经典案例)

java程序流程控制之二&#xff1a; Ⅰ、分支语句&#xff1a;switch-case1、switch-case 分支结构&#xff1a;其一、描述&#xff1a;其二、代码为&#xff1a;其三、截图为&#xff1a; 2、switch-case 分支结构的案例1&#xff1a;判断是否合格其一、描述&#xff1a;其二、…

HC32F460 IIC访问总结

IC 总线由一根时钟线&#xff08; SCL&#xff09;&#xff0c;一根数据线&#xff08; SDA&#xff09;构成。所有的连接器件必须是漏 极开路输出。 SCL&#xff0c; SDA 线外接上拉电阻。电阻阻值取决于系统应用。 通常情况下&#xff0c;一个完整的通信过程包括下列 4 部分&…

人类的信仰从何而来?

原创 Kirill Nikitine 新发现科普书单 自人类诞生伊始&#xff0c;就不乏热衷于这个哲学基本问题的人士。基于近 15 个世纪以来多名伟大思想家发起的研究&#xff0c;科学家终于给出了答案。究其原因&#xff0c;人类学、神经学和文化因素促使人类拥有信仰。 在蒂姆・伯顿&…