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并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我的理解 ...
随机推荐
- Redis做Mybatis的二级缓存
Redis做mybatis的二级缓存 作用提升速度,保证多台服务器访问同一数据库时不会崩 注意:保证本地有下载redis且已经打开,否则无法使用. [本文只讲述了实现步骤,并没有原理讲解] 保证有导入 ...
- 一文总结现代 C++ 中的初始化
本文尝试回答: 现代 C++ 有哪几种初始化形式?分别能够用于什么场景?有什么限制? MyClass obj(); 为什么没有调用默认无参构造函数创建一个对象? new int 和 new int() ...
- Git如何拉取指定远程分支
转载来自https://www.jianshu.com/p/856ce249ed78 目的 我们想要获取到代码仓库中分支"a" 中的文件到本地,我了解到有三种方法. 代码仓库 ...
- MySQL【一】基本使用----超详细教学
相关文章: win10下MySQL安装教程(MySql-8.0.26超级详细)_丨汀.的博客-CSDN博客 1.RDBMS(Relational Databases Management System ...
- Linux 文件目录操作命令
Linux 基础的文件目录操作命令,融合多部Linux经典著作,去除多余部分,保留实用部分. 显示目录或文件: 显示目标列表,在Linux系统中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显 ...
- P8575 「DTOI-2」星之河 题解
题目链接:星之河 比较经典的偏序问题.区别于强制在线类算法:树套树之类的,对于偏序问题,我们有许多种优秀的离线算法,比如此篇要讲的 cdq 分治. 它更偏向于一种思想,它的思想使得它对偏序类问题,往往 ...
- ElasticSearch7.3学习(十)----采用restful风格对索引的增删改查
1. 为什么需要手动创建索引 直接put数据 PUT index/_doc/1,es会自动生成索引,并建立动态映射dynamic mapping.这样的话很大可能与实际的需求不服,在实际的应用上,我们 ...
- 8.类--《Python编程:从入门到实践》
8.1 创建类 根据约定,在Python中,首字母大写的名称指的是类. 这个类定义中的括号是空的,因为我们要从空白创建这个类.在Python 2.7中创建类时,需要做细微的修改--在括号内包含单词ob ...
- 如何做好一个基础的搜索功能?记一个因客户大数据量而导致的后发先至Bug
壹 ❀ 引 上篇文章算是开了一个新系列,因为工作缘故,我基本每天都在跟各式各样的bug打交道.其实站在一个开发的角度,我想每个人应该都更喜欢创造新代码,创造新bug,而不是每天都泡在茫茫代码海洋中定位 ...
- NC18389 收益
题目链接 题目 题目描述 小N是一家金融公司的项目经理.他准备投资一个项目,这个项目要融资L元,融资成功后会得到M元的利润.现在有n个客户.对于第i个客户,他有mi元钱.小N承诺假如最后筹够钱,会给这 ...