想写一个synchronized练习,不知道我的理解对不对。
类似于俄罗斯方块落下,当不安任何按键时,方块自动落下,按“下”键时,方块迅速落下,此时自动落下就被同步失效了,不知道这算不算同步?
我写了一个实现,为什么不能达到效果呢?int y;//控制方块下落坐标 
synchronized void logic1()//按“下”键坐标下降
{
if(isDown == true)
{
y+=2;
}
} int count;//计时器
synchronized void logic()//任何键位都不按,自动下落
{
count++;
if(count%5==0)
y+=10;
}这2个方法放在线程逻辑中,这样对么?
初学菜鸟请教高人~

解决方案 »

  1.   

    你是想在两个不同的线程分别调用logic1和logic方法把?
    我看来,没有问题.附:synchronized 放在某个对象方法前,就是以当前对象作为锁;故logic和logic1同时只有一个方法在被调用。
      

  2.   


    你是想在两个不同的线程分别调用logic1和logic方法把?
    我现在是在同一个线程run()方法里调用,结果不行,这个必须在不同线程里调用吗?
      

  3.   

    没问题啊
    但是你在按"下"的时候 y+=2, 而在什么都不按的时候 y+=10,速度不对啊
    利用count++来计时,恐怕不好吧,因为加一下很快的还有,你是每按一下“下”,就调用一次logic1(),还是按住的时候持续调用logic1()可否把你的run方法里相关的代码贴一下