多线程-同步函数

 1 package multithread.test;
 2 /*
 3  * 需求:储户,有两个,每个都到银行存钱每次存100,,共存3次。
 4  * 
 5  * 
 6  */
 7 
 8 class Bank{
 9     private int sum;
10 //    private Object obj = new Object();//函数修饰后同步代码块对象就不需要了
11     public synchronized void add(int num) {//add方法也是线程的代码 ,sum是共享数据
12 //        synchronized (obj) {//函数和这个代码块内容包括相同,可以用同步函数解决synchronized修饰函数
13             sum = sum +num;
14             
15             System.out.println("sum="+sum);
16 //        }
17         
18     }
19 }
20 class Cus implements Runnable{
21     Bank b = new Bank();
22 
23     public void run() {
24         for (int x = 0; x < 3; x++) {
25             b.add(100);//找到线程安全隐患的代码
26         }
27     }
28 }
29 public class BankDemo {
30 
31     public static void main(String[] args) {
32         // TODO Auto-generated method stub
33         Cus c = new Cus();
34         Thread t1 = new Thread(c);
35         Thread t2 = new Thread(c);
36         t1.start();
37         t2.start();
38     }
39 
40 }
BankDemo

 

posted @ 2021-11-08 23:34  doremi429  阅读(11)  评论(0编辑  收藏  举报