黑马程序员技术交流社区

标题: 关于多线程synchronized [打印本页]

作者: 小路飞    时间: 2013-3-16 01:25
标题: 关于多线程synchronized
以后处理多线程同步问题是用synchronized...wait notifyAll还是lock...condition?孰优孰劣?请指点,谢了!还有什么时候用同步函数,什么时候用同步代码块?
作者: HM刘俊    时间: 2013-3-16 01:54
应该是都可以用吧。不过lock...condition是新版本的,应该能更优化代码吧。
同步函数是避免“多线程访问同一对象”的良方。即,当多个线程访问当多个线程访问同步方法时,只有一个能执行,其余的都必须挂起。
一般来说,当方法修改关键属性值的时候,需要使用同步函数。例如取钱方法和存钱方法都应该是同步方法。
同步代码块其实和同步方法的使用时机差不多,不过相比之下同步代码块更灵活,他可以在括号内放入任何对象的引用,而同步方法只能对本对象进行同步。
但使用安全性来说,同步代码块的灵活性给他带来了潜在的危险。。。
作者: 123    时间: 2013-3-16 07:48
同步锁要好一些,Lock提供了同步方法和同步代码块所没有的功能,同步锁(Lock)通过显示定义同步锁对象来实现同步,使用Lock对象充当同步锁。
同步代码块可以人为的指定获得某个对象的锁,但是同步代码块无须显示指定同步监视器,同步方法的同步监视器就是对象本身。同步块的效率要比同步代码块的效率高。
作者: 小路飞    时间: 2013-3-16 08:47
那condition中的方法与之前的wait,notify相比较,有哪些优势?
作者: 熊冠银    时间: 2013-3-16 08:55
lock condition好,因为是1.5新特性嘛。将隐式的加锁释放锁显示化了,condition中可以持有多个锁




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