Java高级程序设计-多线程(二).pptx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
第3章 多线程(二) Java 高级程序设计 Java高级程序设计-多线程(二)全文共34页,当前为第1页。 回顾 进程一般代表一个应用程序,一个进程中可以包含多个线程。 合理使用多线程能够提高程序的执行效率,处理高并发应用。 线程的创建有继承Thread类和实现Runnable接口两种方式,通过Runnable方式可以更加容易实现多线程之间资源共享。 通过sleep可以使线程进入休眠状态,通过join方法可以让线程处于等待,其他线程执行完毕后继续执行。 线程生命周期包括:新建 就绪 运行 阻塞 死亡5种状态。 Java高级程序设计-多线程(二)全文共34页,当前为第2页。 本章内容 掌握同步代码块的使用 掌握同步方法的使用 理解线程死锁 掌握 ThreadLocal 类的使用 使用多线程模拟猴子采花 使用同步方法模拟购票 使用多线程模拟购物订单生成 使用 ThreadLocal 类模拟银行取款 Java高级程序设计-多线程(二)全文共34页,当前为第3页。 3.1 同步代码块 线程安全问题 同步代码块的使用 使用多线程模拟猴子采花 20 25 Java高级程序设计-多线程(二)全文共34页,当前为第4页。 3.1 线程安全 多线程编程时,由于系统对线程的调度具有一定的随机性,所以,使用多个线程操作同一个数据时,容易出现线程安全问题。 当多个线程访问同一个资源时,如果控制不好,也会造成数据的不正确性。 以银行取钱为例: 用户输入账户、密码,系统判断用户的账户、密码是否匹配 用户输入取款金额 系统判断账户余额是否大于取款金额 如果余额大于等于取款金额,则取款成功,否则取款失败 Java高级程序设计-多线程(二)全文共34页,当前为第5页。 3.1.1 模拟银行取款 使用多线程并发模拟两个账户并发取钱的问题: 创建账户类(Account),用于封装用户的账号和余额 public class Account { // 用户账号 private String no; // 账户中余额 private double balance; public Account() { } // 构造方法用于初始化账户、余额 public Account(String no, double balance) { this.no = no; this.balance = balance; } //getter和setter省略 Java高级程序设计-多线程(二)全文共34页,当前为第6页。 3.1.1 模拟银行取款 创建模拟两个线程的取款类 DrawThread,该类继承 Thread 类。取钱的业务逻辑为当余额不足时无法提取现金,当余额足够时系统吐出钞票,减少余额 public class DrawThread extends Thread { // 模拟用户账户 private Account account; // 当前线程索取钱数 private double drawAccount; //完成数据初始化工作 public DrawThread(String name, Account account, double drawAccount) { super(name); this.account = account; this.drawAccount = drawAccount; } public void run() { // 账户余额大于取钱数据 if (account.getBalance() >= drawAccount) { System.out.println(this.getName() + "\t 取款成功 ! 吐钞 :" + drawAccount); // 修改余额 account.setBalance(account.getBalance() - drawAccount); System.out.println("\t 余额 : " + account.getBalance()); } else { System.out.println(this.getName() + " 取钱失败!余额不足 "); } } } // 当多个线程同时修改同一个共享数据时,将涉及数据安全问题 Java高级程序设计-多线程(二)全文共34页,当前为第7页。 3.1.1 模拟银行取款 由于多线程并发问题,一个线程执行余额操作可能未完毕,另外一个线程读取或者也在操作余额,必然会引起数据的不准确性。 这个时候需要在线程中加入对数据的保护机制,从而达到防止并发引起的数据不准确。 Java高级程序设计-多线程(二)全文共34页,当前为第8页。 3.1.2 同步代码块的使用 Java中多线程中引入了同步监视器,使用同步监视器的常用方式是使用同步代码块,保
剩余33页未读,继续阅读
- 粉丝: 84
- 资源: 9357
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_5905.PNG
- Cyclone Version 9.51
- 高性能量化回测工具 hikyuu 2.0.3 python 3.12 windows 安装包
- 省级城乡居民基本养老保险情况数据集(2010-2022年).xlsx
- 舞队填写版.cpp
- 基于BP神经网络的多输入单输出回归预测.zip
- 高性能量化回测工具 hikyuu 2.0.3 python 3.9 windows 安装包
- 省级城镇职工基本养老保险情况2000-2022年.xlsx
- 高性能量化回测工具 hikyuu 2.0.3 python 3.10 windows 安装包
- 算法部署-使用OpenVINO+C#部署PaddleOCR字符识别算法-项目源码-优质项目实战.zip