随笔-16  评论-50  文章-2  trackbacks-0

上一篇中的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 阅读(249) 评论(0)  编辑  收藏 所属分类: 跟老刘学Java

只有注册用户登录后才能发表评论。


网站导航: