感觉好像不能在非同步块内执行,不知道对不对
有没有人帮解释下能或者不能

解决方案 »

  1.   

    notify:
    此方法只应由作为此对象监视器的所有者的线程来调用。通过以下三种方法之一,线程可以成为此对象监视器的所有者: 通过执行此对象的同步 (Sychronized) 实例方法。 
    通过执行在此对象上进行同步的 synchronized 语句的正文。 
    对于 Class 类型的对象,可以通过执行该类的同步静态方法。
      

  2.   

    // Object test=new Object();
           synchronized (Object.class) {
                try {
                    Object.class.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } Object test=new Object();
           synchronized (test) {
                try {
                    test.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }这样都可以运行 但将sync去掉则出错
      

  3.   

    2楼的代码看不懂,什么意思,能解释一下么
    比如  synchronized (Object.class) 为什么Object.class进行同步,这里的Object.class又指什么,这样做有什么意义
    谢谢大家了!
      

  4.   

    2楼的代码看不懂,什么意思,能解释一下么 
    比如  synchronized (Object.class) 为什么Object.class进行同步,这里的Object.class又指什么,这样做有什么意义 
    谢谢大家了!
    ---------------------------------
    不好意思,偶也每看懂,同步块?
      

  5.   

    2楼的代码看不懂,什么意思,能解释一下么  
    比如  synchronized (Object.class) 为什么Object.class进行同步,这里的Object.class又指什么,这样做有什么意义  
    谢谢大家了! 
    --------------------------------- 
    不好意思,偶也每看懂,同步块?同步整个class的所有对象
    相当于public static Object test=new Object(); 
           synchronized (test) { }
    一个类的任何一个对象lock了test后,其他任何此类的对象必须等待改lock释放后才可以获得test的lock
      

  6.   

    这里我还是不很明白,synchronized (Object.class) 怎么会和synchronized (test) 都是对于同步范围的制定呢,
    另外,一个类的任何一个对象lock了test后,其他任何此(此指代什么呢)类的对象必须等待改lock