1:数据安全问题

      1.1:什么情况下会出现数据安全问题?

            多个线程对同一个资源进行操作,并且操作资源的语句有多条。那么这个时候这些语句因为cpu的随机性,有可能被多个线程分开执行。导致数据安全问题。

             例子:有3个人分别是你爸、你妈妈、你姐,去你的一个账户汇钱给你,每一个只能存3次,一次只能存100元。每存一次,请打显示出账户里的余额。代码体现:

 1 public class SaveMoneyDemo1 {
 2     
 3     public static void main(String[] args) {
 4         SaveDemo1 s = new SaveDemo1();
 5         Thread t1 = new Thread(s);
 6         t1.setName("老爸");
 7         Thread t2 = new Thread(s);
 8         t2.setName("老妈");
 9         Thread t3 = new Thread(s);
10         t3.setName("姐姐");
11         t1.start();
12         t2.start();
13         t3.start();
14     }
15 
16 }
17 
18 class SaveDemo1 implements Runnable{
19     private int sum = 0;
20     //要执行的代码块放在run方法里面。
21     public void run() {
22         //每个人能存三次,就是循环三遍
23         for(int i=0; i<3; i++){
24             sum+=100;
25             System.out.println(Thread.currentThread().getName()+"给你汇了100,目前账号共有 "+sum+" 元");
26                     
27         }
28     }
29 }
30 /**
31  * 执行结果:
32         老妈给你汇了100,目前账号共有 200 元
33         老妈给你汇了100,目前账号共有 400 元
34         老妈给你汇了100,目前账号共有 500 元
35         姐姐给你汇了100,目前账号共有 300 元
36         姐姐给你汇了100,目前账号共有 600 元
37         姐姐给你汇了100,目前账号共有 700 元
38         老爸给你汇了100,目前账号共有 200 元
39         老爸给你汇了100,目前账号共有 800 元
40         老爸给你汇了100,目前账号共有 900 元
41  * 
42  */
没有同步的汇款代码

相关文章: