黑马程序员技术交流社区

标题: 同步的两种表现形式 [打印本页]

作者: mm446899    时间: 2014-12-16 01:44
标题: 同步的两种表现形式
:hug:求粉:
        (1)同步代码块:
                可以指定需要获取哪个对象的同步锁,使用synchronized的代码块同样需要锁,但他的锁可以是任意对象
                考虑到安全问题,一般还是使用同一个对象,相对来说效率较高。

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

        在jdk1.5后,用lock锁取代了synchronized,个人理解也就是对同步代码块做了修改
作者: 清诗纪事    时间: 2014-12-16 18:45
不是对同步代码块修改了,只是对锁修改了,变灵活了,还可以控制锁的释放。而且可以在不唤醒己方的情况下,唤醒对方




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2