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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouchao 中级黑马   /  2013-7-6 08:51  /  995 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵海洋 于 2013-7-6 18:34 编辑

public class Test
{
        public static void main(String[] args)
        {        
                Custom c = new Custom();
                Thread t1 = new Thread(c);
                Thread t2 = new Thread(c);
                t1.start();
                t2.start();
                for(int x=1;x<4;x++)
                {
                        System.out.println(Thread.currentThread().getName()+"----"+x);
                }
        }
}
class Bank
{
        int zonge = 0;
        public int huiKuan(int jinge)
        {
                zonge = zonge+jinge;
                return zonge;
        }
}
class Custom implements Runnable
{
        Bank b = new Bank();
        public synchronized void run()
        {
                for(int x=0;x<3;x++)
                {        
                        b.huiKuan(100);
                        System.out.println(Thread.currentThread().getName()+"----"+b.zonge);
                }
        }
}


输出结果   
main----1
main----2
Thread-1----100
Thread-1----200
Thread-1----300
main----3
Thread-0----400
Thread-0----500
Thread-0----600
为什么线程1执行完才执行线程0  不是同步的吗  应该交叉运行的啊
加入主线程测试 与主线程可以交叉运行 多次测试可是t1和t2始终无法交叉运行啊
是因为锁加的有问题吗?到底要如何修改呢?


评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

2 个回复

倒序浏览
liukunaitasa 发表于 2013-7-6 10:08
楼主同步锁加错地方了吧
package lovebug;
public class Test

貌似有点了解了 感谢你的回答!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马