码迷,mamicode.com
首页 > 编程语言 > 详细

Java多线程之对写业务加锁,对读业务不加锁,会产生脏读

时间:2020-01-31 20:53:53      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:ram   system   int   rac   java多线程   ati   catch   str   unit   

 1 import java.util.concurrent.TimeUnit;
 2 
 3 /**
 4  * 对写业务加锁
 5  * 对读业务不加锁
 6  * 脏读
 7  */
 8 public class Account {
 9 
10     String name;
11     double balance;
12 
13     public synchronized void set(String name, double balance) {
14         this.name = name;
15         try {
16             Thread.sleep(2000); //写线程休眠两秒
17         } catch (InterruptedException e) {
18             e.printStackTrace();
19         }
20         this.balance = balance;
21     }
22 
23     /**
24      * 解决脏读在方法上加synchronized
25      * @param name
26      * @return
27      */
28     public /*synchronized*/ double getBalance(String name) {
29         return this.balance;
30     }
31 
32     public static void main(String[] args) {
33 
34         Account account = new Account();
35         new Thread(() -> account.set("张三", 100.0)).start();
36 
37         try {
38             TimeUnit.SECONDS.sleep(1); //读线程休眠一秒
39         } catch (InterruptedException e) {
40             e.printStackTrace();
41         }
42 
43         System.out.println(account.getBalance("张三"));
44 
45         try {
46             TimeUnit.SECONDS.sleep(2); //读线程休眠两秒
47         } catch (InterruptedException e) {
48             e.printStackTrace();
49         }
50 
51         System.out.println(account.getBalance("张三"));
52 
53     }
54 
55 }

 

Java多线程之对写业务加锁,对读业务不加锁,会产生脏读

标签:ram   system   int   rac   java多线程   ati   catch   str   unit   

原文地址:https://www.cnblogs.com/mxh-java/p/12246451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!