Synchronize读脏

对一个对象的方法加锁的时候,需要考虑业务的整体性

为setValue/getValue方法,同时加上synchronize同步关键字
保证业务的原子性,否则,会出现错误的结果

package com.bjsxt.base.sync004;/*** 业务整体需要使用完整的synchronized,保持业务的原子性。**/
public class DirtyRead {private String username = "bjsxt";private String password = "123";public synchronized void setValue(String username, String password) {this.username = username;try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}this.password = password;System.out.println("setValue最终结果:username = " + username + " , password = " + password);}public void getValue() {System.out.println("getValue方法得到:username = " + this.username + " , password = " + this.password);}public static void main(String[] args) throws Exception {final DirtyRead dr = new DirtyRead();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {dr.setValue("z3", "456");}});t1.start();Thread.sleep(1000);dr.getValue();}}

运行

SetValue先执行,设置值之后,休眠2秒
SetValue执行1秒之后,getValue开始执行
此时,getValue获取值,拿到的密码是错误的

Synchronize读脏相关推荐

  1. Synchronize读脏解决

    Synchronize读脏解决 对于业务需要同步的 同时,添加Synchronize关键字 比如,在getValue/setValue方法上 都加上synchronize关键字 保证,业务的一致性 p ...

  2. MySQL事务的读脏

    所谓读脏,是指一个事务读取了,另外一个事务未提交的数据 首先,开启两个命令行窗口,模拟账户a和账户b 登录到数据库,chapter06 设置b账户,事务的隔离级别 MySQL默认的隔离级别是REPEA ...

  3. 事务(ACID)、并发一致性问题(丢失修改、读脏数据、不可重复读、幻影读)、封锁(封锁粒度、类型、协议、MySQL 隐式与显示锁定)

    1. 事务 1.1 概念 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚. 1.2 ACID 1.2.1  原子性(Atomic ...

  4. 共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据...

    作者:T-Birds blog.csdn.net/weixin_36634753/article/details/90815755 共享锁(S锁): 又称为读锁,可以查看但无法修改和删除的一种数据锁. ...

  5. sql怎么读_大白话讲解脏写、脏读、不可重复读和幻读

    一般对于我们的业务系统去访问数据库而言,它往往是多个线程并发执行多个事务的,对于数据库而言,它会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决 我 ...

  6. 脏写、脏读、不可重复读、幻读的区别

    一般对于我们的业务系统去访问数据库而言,它往往是多个线程并发执行多个事务的,对于数据库而言,它会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决 我 ...

  7. 大白话讲解脏写、脏读、不可重复读和幻读

    一般对于我们的业务系统去访问数据库而言,它往往是多个线程并发执行多个事务的,对于数据库而言,它会有多个事务同时执行,可能这多个事务还会同时更新和查询同一条数据,所以这里会有一些问题需要数据库来解决 我 ...

  8. 【Java面试高频-集合】- 读写的场景设计集合是怎么样?对于读多写少要如何设计的呢?对于读少写多又该如何设计呢?

    Java集合-读写的场景 1 读多写少的场景 **CopyOnWrite的思想.**读数据不加锁,写数据的时候利用拷贝的副本来执行. ReadWriteLock的思想也可以. 那么 写线程现在把副本数 ...

  9. 1.1MySQL-InnoDB-READ UNCOMMITTE(读未提交)

    1.设置为读未提交 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 2.查看隔离级别 SELECT @@tx_isolation; 3 ...

最新文章

  1. Spring Cloud应用开发(五:API网关服务)
  2. 软件项目版本号的命名规则及格式
  3. 以一致的体验交付和管理云原生多集群应用
  4. dp打开思路3:HDU1069 POJ3616 POJ1088
  5. CentOS 7 下安装 Redis
  6. 编程笔记:python 中的 OrderedDict
  7. 树上10只鸟,开枪打死1只,还剩几只?
  8. Centos7.4 安装Docker CE版
  9. 崩坏3区号+86_中国大陆国际区号是“ +86”,还是“ +086”、“ +0086”
  10. 【python】80行代码实现压缩包密码破解软件,支持zip和rar
  11. css3中translateY、translateX的使用
  12. 冲刺大厂每日算法面试题,动态规划21天——第七天
  13. 理性分析三星盖乐世炸弹7
  14. 阿里云数据库RDS如何监控、备份及克隆实例?
  15. item_get - 获得搜好货商品详情
  16. (超级详细教程)搭建自己的博客——从购买服务器到建站
  17. c语言实现 自动访问网址,使用C语言实现网站开发
  18. 基于H5的App在IOS App Store的打包发布流程
  19. nginx视频在线播服务器,Windows环境上用jwplayer+Nginx搭建视频点播服务器
  20. 《解题报告》(第19讲) 进制转换(一) - 入门

热门文章

  1. Mybatis Plugin(拦截器)的开发
  2. ajax分页实现(php)
  3. MongoDB 征途
  4. 句法分析:依存分析(Dependency Parsing)
  5. 区块链BaaS云服务(15)复杂美chain33
  6. HDU-2149(博弈)
  7. 09-LearnTheArchitecture-MemoryManagement
  8. Android keystore/Keymaster的代码导读
  9. 基于策略的一种高效内存池的实现
  10. python的openpyxl库如何读取特定列_通过渲染一百万个网页,来了解网络是如何崩溃的...