没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
以银行取钱为例模拟以银行取钱为例模拟Java多线程同步问题完整代码多线程同步问题完整代码
主要介绍了以银行取钱为例模拟Java多线程同步问题完整代码,具有一定借鉴价值,需要的朋友可以参考下。
简单了解下在操作系统中进程和线程的区别:
进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。
(进程是资源分配的最小单位)
线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调
度的最小单位)
线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。
多进程是指操作系统能同时运行多个任务(程序)。
多线程是指在同一程序中有多个顺序流在执行。首先存钱取钱的这个操作,应该是线程操作的,可以有很多的顾客,这意
思就是得有多个线程,多个线程之间共同操作一个银行,银行的金额就需要同步。才能保证线程安全。
所以,下面就把这个代码的实例放这,有不对的地方,还请指出来哈。因为有个老铁问这个多线程的代码。
首先是银行,这个对象model的创建。
package com.lxk.threadTest.bank;
/**
* 银行model,一个总金额属性。
* <p>
*
* @author lxk on 2017/6/26
*/
public class Bank {
/**
* 给银行个启动资金,不然怎么干生意呢。
*/
private int sum = 200;
//这个从来不这么用,但也算是正确的一种加锁的机制:同步代码块。
//Object obj = new Object();
/**
* 存钱
* 要是不加[synchronized--同步函数],则会出现多线程安全问题。
*/
public synchronized void add(int n) {
//synchronized (obj) {
sum = sum + n;
try {
Thread.sleep(10);
}
catch (Exception ignore) {
}
//当存钱次数变多的时候,就可以发现,存钱的线程确实是2个在交替执行存钱这个动作的。
System.out.println(Thread.currentThread().getName() + "...sum=" + sum);
//}
}
/**
* 取钱
* 要是不加[synchronized--同步函数],则会出现多线程安全问题。
*/
public synchronized void reduce(int n) {
if (sum - n >= 0) {
sum = sum - n;
} else {
System.out.println("bank's money is not enough !");
}
try {
Thread.sleep(30);
}
catch (Exception ignore) {
}
//当存钱次数变多的时候,就可以发现,存钱的线程确实是2个在交替执行存钱这个动作的。
System.out.println(Thread.currentThread().getName() + "...sum=" + sum);
}
}
在代码里面有存和取2个方法,这2个方法,以及一个总金额,里面有部分被注释掉的代码,那个是简单易懂好理解的,多线
程加锁互斥,保证线程间同步的方法。
但是这个是不常用的方法,常用的就是使用synchronized这个关键字来修饰同步方法。
资源评论
weixin_38565221
- 粉丝: 6
- 资源: 946
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- vidstream-3-0.0.1.tar.gz
- 基于FPGA深度学习的SPI 驱动 HC595 点亮数码管
- 2023-2024学年教材费结算明细(公示) -V2.xls
- 129197954513812WPS.apk
- 1_2.cpp
- logxianshidddd
- 细胞的奇迹:吃出来的免疫力(美亚畅销书!作者的TED演讲播放量超300万次!《谷物大脑》作者、《三联生活周刊》推荐!吃下对的食物,改善你的... (Z-Library).azw3
- 智能手机产品拆解,使用mindmaster打开
- 11111111111111
- 统信系统ARM64依赖openssl-1.0.2版本的libssl.so.10和libcrypto.so.10文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功