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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lidongzhe 初级黑马   /  2016-5-24 23:52  /  317 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程安全问题出现的根本原因:
    1.必须存在两个或者两个以上的线程。
    2.多个线程共享着一个资源,而且操作资源的代码有多句。
   
出现了线程安全问题的解决:
   
    1. 同步代码块
      
       格式:
           synchronized(锁对象){
              需要被同步的代码
           }
      
    同步代码块要注意的事项:
       1. 锁对象可以是任意的一个对象。
       2. 锁对象必须是多个线程共享的资源。
       3. 调用了sleep方法的线程并不会释放锁对象。
       4. 如果不存在着线程安全问题,千万不要使用同步代码块或者是同步函数, 因为会降低效率的。
      
   
    2. 同步函数  : 使用synchronized修饰该函数则称作为同步函数。
   
    同步函数要注意的事项:
       1. 非静态同步函数的锁对象是this对象,静态函数的锁对象是当前所属类的class文件对象。
       2. 同步函数的锁对象是固定的,无法更改。
   
   
    推荐使用: 同步代码块
   
    推荐的原因:
       1. 同步代码块的锁对象可以由我们自己指定,同步函数的锁对象是固定 的。
      2. 同步代码块可以随意指定那个范围需要被同步,而同步函数必须是整个函数都同步, 代码不灵活。

1 个回复

倒序浏览
多谢大神分享!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马