上一篇中的Bounce程序,由于 addBall 方法阻塞了事件队列线程,导致事件队列线程无法再响应其他界面事件。因此,点击 Start 按钮后,程序就好像死机一样。如果启动一个新的线程,问题就迎刃而解了。
源代码
下载地址:http://www.blogjava.net/Files/jeff-lau/bounce.zip
下面是部分源代码。
/**
* @(#) BounceFrame.java 2007-12-31
*
* Copyright© 2007 Jeff. 该源代码遵循BSD开源协议。
*/
private void addBall() {
new Thread(new Runnable() {
public void run() {
Ball ball = ballPanel.addBall();
try {
for (int i = 0; i < 1000; i++) {
ball.move(ballPanel.getBounds());
ballPanel.repaint();
Thread.sleep(3);
}
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}).start();
}
启动一个新线程
// 创建一个Runnable接口的实现
Runnable r = ...;
//创建一个Thread对象
Thread t = new Thread(Runnable r);
// 启动线程
t.start();
还有一个启动线程的方法,就是直接从Thread派生一个类,而不是实现Runnable接口。如:
//MyThread是Thread类的一个子类
Thread t = new MyThread();
t.start();
posted on 2007-12-31 22:45
Jeff Lau 阅读(244)
评论(0) 编辑 收藏 所属分类:
跟老刘学Java