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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ⑷嚸V恱 于 2013-8-13 18:14 编辑

下面是毕老师讲的代码片段:
   class Bank {
      private int sum;
      public syschronized void add(int n){
            sum=sum+n;
            try{
                 Thread.sleep(10);
             catch(Exception e){
              }
                 System.out.println("sum="+sum);
          }
      }
  }


  class Bank {
      private int sum;
      public void add(int n){
           syschronized ()

            sum=sum+n;
            try{
                 Thread.sleep(10);
             catch(Exception e){
              }
                 System.out.println("sum="+sum);
          }
      }
  }

7 个回复

倒序浏览
synchronized 修饰的方法表示同一时间只能有一个线程进入到这个方法的方法块里面其他的线程需要等待直到占用的那个线程离开这个方法.
对程序来讲同步的部分很影响运行效率,同步所覆盖的代码越多,对效率的影响就越严重。因此我们通常尽量缩小其影响范围。我们只把一个方法中该同步的地方同步。
回复 使用道具 举报
都是去给当前this对象加锁,都可以起到线程安全的效果。区别如下:
1、加到成员方法中,代表整个成员方法都需要同步,
2、加到同步代码中,代表整个synchronized(共享对象){}中的语句需要做同步。
区别:加到同步代码中的控制代码比较精细,方法中的整个代码块都需要。可能在成员方法中的,还有其他代码,有些需要同步有些不需要同步。如果只需要对需要的代码,可以用synchronized关键字包装起来就行,达到线程安全,而不影响其他的剩下的代码。如果要怎么使用,按需要尽量使用对需要代码同步即可,但是同步中的丧失的是效率,效率可能会大打折扣,此策略也可提高一定的效率。
回复 使用道具 举报

都是去给当前this对象加锁,都可以起到线程安全的效果。区别如下:
1、加到成员方法中,代表整个成员方法都需要同步,
2、加到同步代码中,代表整个synchronized(共享对象){}中的语句需要做同步。
区别:加到同步代码中的控制代码比较精细,方法中的整个代码块都需要。可能在成员方法中的,还有其他代码,有些需要同步有些不需要同步。如果只需要对需要的代码,可以用synchronized关键字包装起来就行,达到线程安全,而不影响其他的剩下的代码。如果要怎么使用,按需要尽量使用对需要代码同步即可,但是同步中的丧失的是效率,效率可能会大打折扣,此策略也可提高一定的效率。
回复 使用道具 举报
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。

回复 使用道具 举报
一个是给整个方法加锁,一个是给方法块内的一段代码加锁,给整个方法加锁的话意味着多个线程同时只能有一个占用获取该方法的使用权,而方法块内的一段代码加锁的话,多个线程可同时获得该方法,但只有一个线程在某一时刻运行加锁后的代码块。。
回复 使用道具 举报
caoshengwei 来自手机 中级黑马 2016-4-17 01:10:23
7#
受教了,6666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马