Java ----多线程 案例
1 package bytezero.threadtest2;
2
3 /**
4 * 银行有一个账户
5 * 有两个储户分别向同一个账户存 3000元,每次存1000,存三次,每次存完打印账户余额
6 *
7 * 分析:
8 * 1.是否是多线程的问题? 是,两个储户线程
9 * 2.是否有共享数据? 有 账户(或账户余额)
10 * 3.是否有线程安全问题? 有
11 * 4.需要考虑如何解决线程安全问题? 同步机制: 三种方式
12 *
13 *
14 *
15 * @author Bytezero1·zhenglei! Email:420498246@qq.com
16 * create 2021-10-18 11:49
17 */
18 class Account{
19 private double balance;
20
21 public Account(double balance) {
22 this.balance = balance;
23 }
24 //存钱
25 public synchronized void deposit(double amt){
26 if(amt > 0){
27 balance += amt;
28
29 try {
30 Thread.sleep(1000);
31 } catch (InterruptedException e) {
32 e.printStackTrace();
33 }
34 System.out.println(Thread.currentThread().getName()+":存钱成功。余额为:"+balance);
35 }
36 }
37
38 }
39 class Customer extends Thread{
40 private Account acct;
41
42 public Customer(Account acct) {
43 this.acct = acct;
44 }
45
46 @Override
47 public void run() {
48 for (int i = 0; i < 3; i++) {
49 acct.deposit(1000);
50 }
51
52 }
53 }
54
55
56 public class AccountTest {
57 public static void main(String[] args) {
58 Account acct = new Account(0);
59
60 Customer c1 = new Customer(acct);
61 Customer c2 = new Customer(acct);
62
63 c1.setName("甲");
64 c2.setName("乙");
65
66 c1.start();
67 c2.start();
68 }
69
70 }

Java ----多线程 案例的更多相关文章
- Java 多线程案例
同步代码块 SynchronizedTest类,用来表示取票功能 package concurency.chapter6; public class SynchronizedTest implemen ...
- Java多线程——线程八锁案例分析
Java多线程——线程八锁案例分析 摘要:本文主要学习了多线程并发中的一些案例. 部分内容来自以下博客: https://blog.csdn.net/dyt443733328/article/deta ...
- JAVA多线程之生产者 消费者模式 妈妈做面包案例
创建四个类 1.面包类 锅里只可以放10个面包 ---装面包的容器2.厨房 kitchen 生产面包 和消费面包 最多生产100个面包3.生产者4消费者5.测试类 多线程经典案例 import ja ...
- java多线程---4 线程同步介绍及不安全案例说明
java多线程---4 线程同步介绍及不安全案例说明 线程同步 并发: 同一个对象被多个线程同时操作. 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候我们就需要线程同步 ...
- Java多线程学习笔记
进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...
- Java多线程开发系列之四:玩转多线程(线程的控制2)
在上节的线程控制(详情点击这里)中,我们讲解了线程的等待join().守护线程.本节我们将会把剩下的线程控制内容一并讲完,主要内容有线程的睡眠.让步.优先级.挂起和恢复.停止等. 废话不多说,我们直接 ...
- Java多线程同步 synchronized 关键字的使用
代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A, ...
- 面试之Java多线程
Java多线程1.什么是多线程2.为什么需要多线程 有什么优点和缺点3.怎么运行 一.多线程是在软件或硬件上并发执行的技术共享数据空间,内存资源和CPU二.优点:把长时间运行的程序任务放到后台处理, ...
- java多线程解决生产者消费者问题
import java.util.ArrayList; import java.util.List; /** * Created by ccc on 16-4-27. */ public class ...
- java多线程系列(三)---等待通知机制
等待通知机制 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我的理解 ...
随机推荐
- 自动部署(apb docker cicd gitlab)
1.安装gitlab-runner docker pull gitlab/gitlab-runner:latest 2.运行镜像 docker run -d --name gitlab-runner ...
- 操作系统开发:BIOS/MBR基础与调试
这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的,在Linux写代码不太舒服,所以最好在Windows上做实验,下载好虚拟机以后还需要下载Nasm汇编器,以及 ...
- MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL
解析全局配置文件 启动流程分析 String resource = "mybatis-config.xml"; //将XML配置文件构建为Configuration配置类 read ...
- PyTorch中实现Transformer模型
前言 关于Transformer原理与论文的介绍:详细了解Transformer:Attention Is All You Need 对于论文给出的模型架构,使用 PyTorch 分别实现各个部分. ...
- 实战视频所需要的IDE和工具软件的下载链接
以下是视频实战所需要的IDE和工具软件的下载链接: Visual Studio Code(适用于Windows.Mac和Linux):https://code.visualstudio.com/dow ...
- 小知识:安装系统后唯独搜不到自己的Wi-Fi
遇到的问题,笔记本在安装Win10系统后在可用Wi-Fi热点中唯独搜不到自己的Wi-Fi. 咨询宽带售后的技术人员,说可能是因为我目前使用的是Wi-Fi 6,而我的笔记本可能是网卡过旧,不支持Wi-F ...
- .NET Core开发实战(第14课:自定义配置数据源:低成本实现定制化配置方案)--学习笔记
14 | 自定义配置数据源:低成本实现定制化配置方案 这一节讲解如何定义自己的数据源,来扩展配置框架 扩展步骤 1.实现 IConfigurationSource 2.实现 IConfiguratio ...
- Power BI 1 DAY
目录 Power BI(商业智能)分析 BI 分析步骤 Power Query 表数据结构 区别 主键 Power Query中的纵向合并与横向合并 销售一表和销售二表进行纵向合并为一张销售表. 产品 ...
- FireFox 报错Security Connection Failed解决方案
1.在浏览器中输入:about:config; 2.搜索security.ssl.enable_ocsp_stapling,双击将其修改为FALSE: 3.返回重新访问之前的网站,问题解决
- sensitive-word v0.13 特性版本发布 支持英文单词全词匹配
拓展阅读 sensitive-word-admin v1.3.0 发布 如何支持分布式部署? sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word ...