当前位置: 代码迷 >> J2SE >> 小弟我想用键盘来控制一个圆形的移动,为什么需要睡眠
  详细解决方案

小弟我想用键盘来控制一个圆形的移动,为什么需要睡眠

热度:43   发布时间:2016-04-23 20:34:58.0
我想用键盘来控制一个圆形的移动,为什么需要睡眠?
具体是这样的:

      使用键盘的上下左右来控制圆形的移动,
      用一个单独的线程来进行重画
      每按一次方向键,就改变坐标,通过重画来实现移动。
     可是为什么在重画的线程里面要加睡眠呢?不加睡觉为什么就不能移动?(为什么需要红色这段代码)


private class TankThread implements Runnable{
long speed=100;

public void run() {
while(true){
repaint();
try {
Thread.sleep(speed);
} catch (InterruptedException e) {
e.printStackTrace();
}
 
}
}
}
------解决方案--------------------
要知道当前并非只有画图这一个线程在运行,画图线程进入睡眠,让出一点CPU运行时间线其它线程,比如说GC线程,方便其及时收集垃圾,又比如说让出时间给监听你键盘的上下左右那个线程,及时传递动作。
其实不用sleep也可以的,因为CPU会自动调度各线程交替运行,只是习惯上应该sleep一下,让"多点"CPU时间给GC
  相关解决方案