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