黑马程序员技术交流社区
标题: 线程锁对象 [打印本页]
作者: lidongzhe 时间: 2016-5-24 23:52
标题: 线程锁对象
线程安全问题出现的根本原因:
1.必须存在两个或者两个以上的线程。
2.多个线程共享着一个资源,而且操作资源的代码有多句。
出现了线程安全问题的解决:
1. 同步代码块
格式:
synchronized(锁对象){
需要被同步的代码
}
同步代码块要注意的事项:
1. 锁对象可以是任意的一个对象。
2. 锁对象必须是多个线程共享的资源。
3. 调用了sleep方法的线程并不会释放锁对象。
4. 如果不存在着线程安全问题,千万不要使用同步代码块或者是同步函数, 因为会降低效率的。
2. 同步函数 : 使用synchronized修饰该函数则称作为同步函数。
同步函数要注意的事项:
1. 非静态同步函数的锁对象是this对象,静态函数的锁对象是当前所属类的class文件对象。
2. 同步函数的锁对象是固定的,无法更改。
推荐使用: 同步代码块
推荐的原因:
1. 同步代码块的锁对象可以由我们自己指定,同步函数的锁对象是固定 的。
2. 同步代码块可以随意指定那个范围需要被同步,而同步函数必须是整个函数都同步, 代码不灵活。
作者: xiaohihi 时间: 2016-5-24 23:58
多谢大神分享!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |