Java多线程编程(二)

Java多线程编程(二)

上一篇中的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();

你可能感兴趣的:(Java多线程编程(二))