当前位置: 首页 > news >正文

Java 基于多线程机制的专项实验

2.1 验证性实验

1、利用两种方式实现多线程:

(1) 第一种方式:继承Thread类

(2) 第二种方式:继承 java.lang.Runnable 接口

第一种方式:

public class Test1 {
public static void main(String[] args) throws InterruptedException { // 132
System.out.println("----------main.....start....1");
// 3. 创建线程对象
MyThread t = new MyThread();
// 4. 启动线程:start -> run方法
t.start();
t.join(); // 主线程让步于 t线程(主线程让t线程加入到自己的执行队列)
for(int i=1;i<=20;i++){
System.out.println("+++++++++++主线程========4===="+i);
}
System.out.println("----------main.....end....2");
}
}
// 代码实现多线程的第一种方式
// 1. 定义一个类继承 Thread类 --》线程类
class MyThread extends Thread{
// 2. 覆盖run方法 -> 定义线程的任务
public void run(){
for(int i=1;i<=20;i++){
System.out.println("=======t线程===33===="+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

第二种方式:

public class Test2 {
public static void main(String[] args) throws InterruptedException {
System.out.println("------main....start....");
// 3. 创建 目标对象
MyTarget tg = new MyTarget();
// 4. 创建线程对象
Thread t2 = new Thread(tg);
// 5. 开启线程:start --> run方法
t2.start();
for(int i=1;i<=20;i++){
System.out.println("***********主线程*************"+i);
Thread.sleep(500);
}
System.out.println("------main....end....");
}
}
// 代码实现多线程的第二种方式:
// 1. 定义一个类实现 Java.lang.Runnable接口 -》目标类
class MyTarget implements Runnable{
// 2. 覆盖 run方法 -》定义线程的任务
public void run(){
for(int i=1;i<=20;i++){
System.out.println("-----------t2线程--------"+i);
try {
Thread.sleep(500); //让当前线程休眠500ms(毫秒)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

2、验证线程同步:

定义一个MyList类,封装String类型数组,数组长度为5,初始存储数据为“A”、“B”,同时定义一个变量index记录数组中元素的个数;创建一个MyList对象list,要求一个线程往list添加“C”,另一个线程往list添加“D”,最后遍历list,打印添加结果。

2.2 自主设计性实验

3、创建两个线程,要求如下:

(1) 通过继承 Thread 类定义线程实现输出 1~26;

(2) 通过实现 Runnable 接口定义线程实现输出A-Z。

4、假设一个银行的 ATM 机,它允许用户存款也可以取款。现在一个账户(Account)上存款为 200元,用户 A 和用户 B 都拥有这个账户存款和取款的权利。用户 A 存入 100 元,而用户 B 将取出 50 元,则最终账户的存款应为 250 元。

请编写线程代码模拟以上过程,要求如下:

(1) 定义一个 Account 类,属性为账户名(userName)和余额(balance),类进行封装;

(2) 线程 ThreadA 负责存钱操作;线程 ThreadB 负责取钱操作;

(3) main 函数中负责开启两个线程,并将存取操作结束后的账户余额进行打印输出

http://www.cnnetsun.cn/news/26829.html

相关文章:

  • 51、Linux 系统中 shell 环境管理与脚本编写全解析
  • 53、编写高效 Shell 脚本:从基础到实践
  • 解锁共享单车数据:从入门到精通的完整分析指南
  • KOOM:如何快速解决Android应用内存泄漏的终极方案
  • API 测试- Postman Vs Rest Assured
  • 如何在React Native应用中实现语音交互?
  • 突破创意瓶颈:BlenderMCP如何用AI重塑3D建模工作流
  • 生产环境出现问题,测试人如何做工作复盘?
  • 测试工程师:这锅我不背,什么情况测试容易背锅以及化解妙招
  • Python自定义HTTP客户端:12306抢票项目的网络请求管理
  • 玩转SM16714PHT景观装饰驱动IC(1)
  • 云服务器的核心优势
  • 15. PPML - 隐私保护机器学习综述 - 《Towards Efficient Privacy-Preserving Machine Learning: A Systematic Review》
  • Qwen3-14B-AWQ:重新定义轻量化大模型效率标准
  • Linux环境下的C语言编程(三十九)
  • 毕业设计实战:基于SSM+MySQL的图书商城管理系统设计与实现,从需求到测试全流程拆解,新手也能轻松通关!
  • 毕业设计实战:基于Java+MySQL的校园二手书交易平台设计与实现,从需求到上线全流程避坑指南!
  • 毕业设计实战:基于SSM+MySQL的问卷调查系统,避开这些坑轻松搞定毕设!
  • 非正弦反电动势下PMSM与BLDC无感控制算法研究:自适应谐波估计降低转矩脉动
  • 单相并网逆变器Matlab仿真:离网仿真与PLL锁相环研究,电感电流谐波含量THD优化仿真效果
  • Kate 高级文本编辑器 v26.03.70 官方中文版
  • yadm 完整使用指南:从入门到精通掌握点文件管理
  • 基于Web的大学生体测管理系统设计与实现中期(1)
  • 代码随想录算法训练营第四十三天 | 98. 所有可达路径
  • GBase 8a数据库集群硬件部署安装建议
  • GBase数据库护航国家管网SCADA系统四年无中断平稳运行
  • 一文搞定 AI 智能体架构设计的9大核心技术
  • 计算机毕业设计springboot基于JAVA的校园图书馆管理系统的设计与实现 基于Spring Boot框架的校园图书馆信息化管理系统开发与应用研究 利用Spring Boot与Java技术构建的高
  • 数据结构==LRU Cache ==
  • AMD ROCm平台上的YOLOv8目标检测:从入门到精通的5步优化指南