本帖最后由 应国炎 于 2011-12-17 00:29 编辑
(我以前有几个问题可能没有说清楚,以后我会尽量说清楚一些的,{:soso_e100:} )
刚看到了多线程同步的章节,就按毕老师写的,自己稍微改了一下实现的是两个储户分帐户存放自己的Money,我把代码全部放同步函数jihe()里,和直接全部放同步代码快中,跑出来的数据竟然是不一样的,也就是说同步代码快和同步函数实现了不一样的处理,为什么会出现这样的情况呢?
以下是我的代码:
- class Bank
- {
- private int sum;
- public void add(int n)
- {
-
- sum=sum+n;
- System.out.println(Thread.currentThread().getName()+" sum="+sum);
-
- }
- }
- class Cus implements Runnable
- {
-
- public void run()
- {
- synchronized(new Object())
- {
- Bank b=new Bank();
- for(int x=0;x<10;x++)
- {
- b.add(100);
- }
- //jihe(); //把上面的代码全部放在了jihe同步函数中
- }
- }
- /*
- public synchronized void jihe()
- {
- Bank b=new Bank();
- for(int x=0;x<10;x++)
- {
- b.add(100);
- }
-
- }*/
- }
- class Test
- {
- public static void main(String args[])
- {
- Cus c=new Cus();
- Thread t1=new Thread(c,"储户1");
- Thread t2=new Thread(c,"储户2");
- t1.start();
- t2.start();
- }
- }
复制代码 |
|