public class SychTest{ 
  private int x; 
  private int y; 
  public void setX(int i){ x=i;} 
  public void setY(int i){ y=i;} 
  public Synchronized void setXY(int i){ 
    setX(i); 
    setY(i); 
   } 
  public Synchronized boolean check(){ 
       return x!=y;   
    } 
    } 
   在下列哪种情况下,check()方法在被另一个不同的类调用时会返回true?
A) check() 永远也不会返回true。 
B) 当通过多线程调用setXY () 时check() 能够返回true。
C) 当通过多线程单独调用setX() 和setY()时check() 能够返回true。
D) 只有当SychTest 被改为允许x和y单独设值时check() 才能够返回true。
这个题是考多线程的知识,可是我只是知道它考试多线程,但是具体的知识我就不知道怎样解决了,请高手指点一下这道题的
考的具体内容,谢谢

解决方案 »

  1.   

    个人观点:
    答案c.这个题考的是synchronized 的作用。
      

  2.   

    同步的意义
    就是使2个内容 不会出现延迟显示
    所以如果 不执行 那个setXY 同步方法的话 
    就不会让2个变量在同一时间 一起设置 于是就可能出现不同
    于是就会返回true
    class Demo{  
      private int x;  
      private int y;  
      public void setX(int i){ 
      x=i;
      }  
      public void setY(int i){
      y=i;
      }  
      public synchronized void setXY(int i){  
      setX(i);  
      setY(i);  
      }  
      public synchronized boolean check(){  
      return x!=y;   
      }  
    }  
    public class Demo01{
    public static void main(String[] args) {
    Demo d = new Demo();
    d.setX(3);
    d.setY(4);
    //d.setXY(5);
    System.out.println(d.check());
    }
    }
      

  3.   

    其实楼主自己写一个卖票的例子 并且加入 延迟 
    就会对synchronized 这个 关键字理解的更深