39.线程同步
来源:互联网 发布:linux恢复删除的文件夹 编辑:程序博客网 时间:2024/05/20 20:21
1. 异步编程模型:t1线程执行t1的,t2线程执行t2的 ,谁也不等谁
同步编程模型:t1线程必须等t2线程执行结束后,t1线程才执行
2. 什么时候要同步
第一:必须是多线程环境
第二:多线程环境共享一个数据
第三:共享的数据涉及到修改操作
3. 为什么要引入线程同步?
为了数据安全尽管应用程序的使用率降低。(尽管线程同步机制使程序(等同)变成单线程)
4.取款实例
package 多线程模拟取款操作;public class T1 {public static void main(String[] args) {Account act = new Account("小马哥",5000.0);Thread t1 = new Thread(new Processor(act));Thread t2 = new Thread(new Processor(act));t1.start();t2.start();}}//取款线程class Processor implements Runnable{//账户Account act;//ConstructorProcessor(Account act){this.act = act;}public void run() {act.withdraw(1000.0);System.out.println("取款1000元成功,余额:"+act.getBalance());}}//账户class Account{String actno;double balance;Account(){}Account(String actno,double balance){this.actno = actno;this.balance = balance;}public void setActno() {this.actno = actno;}public String getActno() {return actno;}public void setBalance() {this.balance = balance;}public double getBalance(){return balance;}public void withdraw(double money) {synchronized(this) {double after = balance - money;//中断try {Thread.sleep(1000);}catch(Exception e) {};this.balance = after;}}}
原理:t1线程和t2线程
t1线程执行到遇到synchronized关键字,就会去找this的对象锁
找到this对象锁,则进入同步语句块中执行程序。当同步语句块。当同步语句块中的代码执行结束后,t1线程归还this的对象 在t1线程执行同步语句块的过程中,如果t2也过来执行以下代码,也遇到synchronized关键字,也去找this对象锁,但是该对象锁被t1 持有,只能在这等待this对象归还
阅读全文
0 0
- 39.线程同步
- 线程同步--线程同步--线程同步--线程同步--线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- PopWindows详解
- 蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
- Excel 数字按长度补0,并转换为文本
- 我的Tensorflow学习之路
- RocketMQ的坑(一)--搭好环境跑起来
- 39.线程同步
- 注解(Annotation)自定义注解入门
- Android设计模式——单例的七种写法
- wangEditor3使用AJAX异步上传图片
- Mybatis中模糊查询
- 蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)
- SQL系列(函数)
- android telnet 连接
- Oracle函数substr与instr