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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张龙欢 中级黑马   /  2013-5-18 17:00  /  934 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张龙欢 于 2013-5-21 00:04 编辑

这两个方法同步吗,如果不同步麻烦解释下谢谢!
class Test
{
synchronized static void sayHello3()
{
}
synchronized void getX(){}
}

3 个回复

倒序浏览
不同步,因为不是同一把锁,静态函数用的锁是本类字节码文件对象,而非静态类用的是this对象,所以不同步的。
回复 使用道具 举报
不同步,静态同步函数的锁是    类名.class        ,同步函数的锁是    this。想要让两个函数同步就需要指定相同的锁。如下代码可以实现同步,而且是安全的。
         
class Demo
{
    public static void main(String[] agre)
    {
            Ticket t=new Ticket();
            Thread t1 = new Thread(t);
                Thread t2 = new Thread(t);
                t1.start();
                try{Thread.sleep(10);}catch(Exception e){}
                t.flag = false;
                t2.start();
    }
}
class Ticket implements Runnable
{
        private static  int tick = 100;
        boolean flag = true;
        public  void run()
        {
                if(flag)
                {
                        while(true)
                        {
                                synchronized(Ticket.class)      //类名.class
                                {
                                        if(tick>0)
                                        {
                                                try{Thread.sleep(10);}catch(Exception e){}
                                                System.out.println(Thread.currentThread().getName()+"....code : "+ tick--);
                                        }
                                }
                        }
                }
                else
                        while(true)
                                show();
        }
        public static synchronized void show()
        {
                if(tick>0)
                {
                        try{Thread.sleep(10);}catch(Exception e){}
                        System.out.println(Thread.currentThread().getName()+"....show.... : "+ tick--);
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 可以尝试用<>把代码粘贴进去.

查看全部评分

回复 使用道具 举报
如果问题已解决请再次编辑,改为以解决,方便大家看帖
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马