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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mm446899 中级黑马   /  2014-12-16 01:44  /  1120 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

:hug:求粉:
        (1)同步代码块:
                可以指定需要获取哪个对象的同步锁,使用synchronized的代码块同样需要锁,但他的锁可以是任意对象
                考虑到安全问题,一般还是使用同一个对象,相对来说效率较高。

                注意:
                **虽然同步代码快的锁可以使任何对象,但是在进行多线程通信使用同步代码快时,
                  必须保证同步代码快的锁的对象和,否则会报错。
                **同步函数的锁是this,也要保证同步函数的锁的对象和调用wait、notify和notifyAll的对象是
                  同一个对象,也就是都是this锁代表的对象。
                格式:
                synchronized(对象)
                {
                        需同步的代码;
                }
        (2)同步函数
                同步方法是指进入该方法时需要获取this对象的同步锁,在方法上使用synchronized关键字,
                使用this对象作为锁,也就是使用了当前对象,因为锁住了方法,所以相对于代码块来说效率相对较低。
                注:静态同步函数的锁是该方法所在的类的字节码文件对象,即类名.class文件
                格式:
                修饰词 synchronized 返回值类型 函数名(参数列表)
                {
                        需同步的代码;
                }

        在jdk1.5后,用lock锁取代了synchronized,个人理解也就是对同步代码块做了修改

1 个回复

倒序浏览
不是对同步代码块修改了,只是对锁修改了,变灵活了,还可以控制锁的释放。而且可以在不唤醒己方的情况下,唤醒对方
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马