上一篇中的Bounce程序,由于 addBall 方法阻塞了事件隊列線程,導致事件隊列線程無法再響應其他界面事件。因此,點擊 Start 按鈕后,程序就好像死機一樣。如果啟動一個新的線程,問題就迎刃而解了。
源代碼
下載地址:http://m.tkk7.com/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 閱讀(251)
評論(0) 編輯 收藏 所屬分類:
跟老劉學Java