首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一道关于多线程的有关问题,求解答

2012-06-03 
一道关于多线程的问题,求解答public class SychTest{private int xprivate int ypublic void setX(int i

一道关于多线程的问题,求解答
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。


这个题是考多线程的知识,可是我只是知道它考试多线程,但是具体的知识我就不知道怎样解决了,请高手指点一下这道题的
考的具体内容,谢谢

[解决办法]
个人观点:
答案c.

这个题考的是synchronized 的作用。
[解决办法]
同步的意义
就是使2个内容 不会出现延迟显示
所以如果 不执行 那个setXY 同步方法的话 
就不会让2个变量在同一时间 一起设置 于是就可能出现不同
于是就会返回true

Java code
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());            }}
[解决办法]
其实楼主自己写一个卖票的例子 并且加入 延迟 
就会对synchronized 这个 关键字理解的更深

热点排行