1:数据安全问题 1.1:什么情况下会出现数据安全问题? 多个线程对同一个资源进行操作,并且操作资源的语句有多条。那么这个时候这些语句因为cpu的随机性,有可能被多个线程分开执行。导致数据安全问题。 ...
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 */
原标题:Java多线程(一)同步与等待唤醒
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。