黑马程序员技术交流社区

标题: 线程锁对象 [打印本页]

作者: 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