当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。 

解决方案 »

  1.   

    这个说法是对的,synchronized 就是干这个的。
      

  2.   

    楼上的,但我测试结果发现,不跟这句话说的一直,你帮我看看,public class Thread3 {
    public void m4t1() {
    synchronized (this) {
    int i = 500;
    while (i-- > 0) {
    System.out.println(Thread.currentThread().getName() + " : " + i);
    }
    }
    } public void m4t2() {
    synchronized(this){
    int i = 500;
    while (i-- > 0) {
    System.out.println(Thread.currentThread().getName() + " : " + i);
    }
    }
    } public static void main(String[] args) {
    final Thread2 myt2 = new Thread2();
    Thread t1 = new Thread(new Runnable() {
    public void run() {
    myt2.m4t1();
    }
    }, "t1");
    Thread t2 = new Thread(new Runnable() {
    public void run() {
    myt2.m4t2();
    }
    }, "t2");
    t1.start();
    t2.start();
    }
    }
      

  3.   

    按这句话说就应该先执行完m4t1()方法,然后T2线程才执行m4t2()方法,但我测试结果不是这样
      

  4.   

    兄弟,你可是创建了2个对象哦,此this不等于彼this!
    各锁各的,不妨碍
      

  5.   

    你把二个this打印出来,看看不就知道了?
      

  6.   

    OH SHIT,看错了,Sorry
    我再看看
      

  7.   

    被你调戏了!
    你的
    final Thread2 myt2 = new Thread2();
    写错了,应该是Thread3
    你的Thread2中,应该是没有同步的!
      

  8.   

    hbwhwang() 兄弟你说对了,我粗心了,写错了,难怪结果跟这句话不符合,
    我通过实践证明
    当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。 
    这句话正确.有没有不同的意见.
    顺便问,这个this是代表这个CLASS的实例吗.
      

  9.   

    this代表这个对象!比如我们写
    this.i=100,表示把这个对象的数据成员i赋值
      

  10.   

    顺便问下,嵌套类里最里层可以用this么,如果能用指代哪个对象?
      

  11.   

    嵌套类的this指嵌套类的对象,如果你要指外围类的对象,用“外围类类名.this”来指明