A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

**
* 需求: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) {}
               
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马