**
* 需求:2个人同时到银行存钱,每次存100;存3次。
* 分析:2个对象,人,银行,人要存钱,同时银行钱增加;
其实人只有存钱这个行为,其他的银行都帮我们做了;
* 那么就有2个行为了;2个人存钱是同步的所以就要多个线程了所以implements Ruannable开启多线程,同时银行的行为是钱增加;
*
*
* */
public class Test4
{
public static void main(String[] args)
{
Customer cus=new Customer();
Thread t=new Thread(cus);
Thread t2=new Thread(cus);
t.start();
t2.start();
}
}
class Customer implements Runnable
{
Bank b=new Bank();
public void run()
{
for(int x=0;x<3;x++) //存3次钱所以循环3次
{
b.add();//银行的钱同时增加,同时人也存了钱;
}
}
}
class Bank
{
Object obj=new Object();//加个同步锁其他线程不会存在安全隐患,以免出现数据问题;
private int num=100,sum;
public synchronized void add() //这种方式是把函数声明为同步类型的函数;跟下面的Synchronized的方式一样;
{
// try
// {
// synchronized(obj) {//这是一个同步锁,执行完才能接着执行;
sum=sum+num;
System.out.println(Thread.currentThread().getName()+"................"+sum);
// }
// Thread.sleep(10);
// }catch(InterruptedException e) {}
}
}
|
|