2.1.5脏读(dirtyRead)
来源:互联网 发布:什么是淘宝的企业店铺 编辑:程序博客网 时间:2024/06/10 09:09
package cha02.execise06;/** * Created by sunyifeng on 17/9/20. */public class ThreadA extends Thread { private PublicVar publicVar; public ThreadA(PublicVar publicVar){ super(); this.publicVar = publicVar; } @Override public void run(){ super.run(); publicVar.setValue("B","BB"); }}
package cha02.execise06;/** * Created by sunyifeng on 17/9/20. */public class ThreadA extends Thread { private PublicVar publicVar; public ThreadA(PublicVar publicVar){ super(); this.publicVar = publicVar; } @Override public void run(){ super.run(); publicVar.setValue("B","BB"); }}
package cha02.execise06;/** * Created by sunyifeng on 17/9/20. */public class Run { public static void main(String[] args) { try { PublicVar publicVar = new PublicVar(); ThreadA threadA = new ThreadA(publicVar); threadA.start(); Thread.sleep(200); publicVar.getValue(); } catch (InterruptedException e) { e.printStackTrace(); } }}
运行结果:getValue方法,线程名称:main,用户名和密码:B,AA
setValue方法,线程名称:Thread-0,用户名和密码:B,BB
程序分析:虽然在赋值时进行了同步、但是取值时没有同步,造成脏读。
加上同步锁
synchronized public void getValue() { System.out.println("getValue方法,线程名称:" + Thread.currentThread().getName() + ",用户名和密码:" + username + "," + password);}
运行结果:setValue方法,线程名称:Thread-0,用户名和密码:B,BB
getValue方法,线程名称:main,用户名和密码:B,BB
程序分析:
1、当线程A调用有同步的方法时,线程A就获得对象锁,其他线程必须等线程A执行完;但是,其他线程可以调用对象的非同步的方法(没有加synchronized的方法)。
2、如果两个方法都加了synchronized(两个方法都是同步的),线程A调用方法1、线程B调用方法2,则必须线程A执行完之后,线程B才能执行。
阅读全文
0 0
- 2.1.5脏读(dirtyRead)
- 从头认识多线程-2.4 脏读(DirtyRead)
- 脏读
- 脏读
- 脏读
- 脏读
- 2.1.5
- Python guide 2.1.5 装饰器(Decorators) 2.1.6动态绑定(Dynamic typing)
- 第13周项目5-字符串操作(2.1)
- 第13周项目5 -字符串操作(2.1)
- 第13周项目5-字符串操作-(2.1)
- 第13周项目5-字符串操作(2.1)
- (2.1.5)内部类和匿名内部类
- 【USACO题库】2.1.5 Hamming Codes海明码(模拟)
- 挑战程序竞赛系列(5):2.1广度优先搜索
- 事务(脏读,不可重复读,虚读)
- 事务(脏读,不可重复读,虚读)
- 学习互联网架构第二课(脏读)
- supervisord上手与配置
- LeetCode刷题(5)
- solr安装配置
- 圆的面积和周长
- C语言习题三
- 2.1.5脏读(dirtyRead)
- Java基础学习之java基本语法(4)【数组】
- jsp简介
- 间接寻址--简单操作
- Java Activiti(6)--流程变量的添加与获取(表act_ru_variable)
- Sicily 1798. Alice and Bob
- 模糊控制简介及数学基础 (模糊集合、隶属函数)
- Ural 1003 Parity(并查集)
- leetcode.array--42. Trapping Rain Water