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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戎石锁 中级黑马   /  2012-8-7 11:05  /  1446 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

synchronized作用到底是什么?我知道synchronized修饰一个方法时,
这个方法不能被2个线程同时访问,但是为什么m1和m2两个方法都用synchronized修饰时,
打印结果先是1000,然后是b=1000,但只有m1方法用synchronized修饰,m2不被synchronized修饰时,
打印结果是2000,b=2000,有点搞不懂了


public class TT implements Runnable
{
        int b=100;
        public synchronized void m1()throws Exception
        {
                b=1000;
                Thread.sleep(5000);
                System.out.println("b="+b);
        }
        public synchronized void m2()throws Exception
        {
                Thread.sleep(2500);
                b=2000;
        }
        public void run()
        {
                try
                {
                        m1();
                }
                catch (Exception e)
                {
                        e.printStackTrace();
                }
        }
        public static void main(String[] args)
        {
                TT tt = new Thread(tt);
                t.start();
                tt.m2();
                System.out.println(tt.b);
        }
}

1 个回复

倒序浏览
TT tt = new Thread(tt);
                t.start();
哪有t?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马