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 */