隨筆-16  評論-50  文章-2  trackbacks-0

          上一篇中的Bounce程序,由于 addBall 方法阻塞了事件隊列線程,導(dǎo)致事件隊列線程無法再響應(yīng)其他界面事件。因此,點擊 Start 按鈕后,程序就好像死機一樣。如果啟動一個新的線程,問題就迎刃而解了。

           

          源代碼

          下載地址:http://www.aygfsteel.com/Files/jeff-lau/bounce.zip

          下面是部分源代碼。

          /**
          * @(#) BounceFrame.java 2007-12-31
          *
          * Copyright? 2007 Jeff. 該源代碼遵循BSD開源協(xié)議。
          */

              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();
              }

           

          啟動一個新線程

          // 創(chuàng)建一個Runnable接口的實現(xiàn)
          Runnable r = ...;

          //創(chuàng)建一個Thread對象
          Thread t = new Thread(Runnable r);

          // 啟動線程
          t.start();

          還有一個啟動線程的方法,就是直接從Thread派生一個類,而不是實現(xiàn)Runnable接口。如:

          //MyThread是Thread類的一個子類
          Thread t = new MyThread();
          t.start();

          posted on 2007-12-31 22:45 Jeff Lau 閱讀(255) 評論(0)  編輯  收藏 所屬分類: 跟老劉學(xué)Java
          主站蜘蛛池模板: 岳阳县| 玉屏| 崇州市| 名山县| 工布江达县| 彩票| 盐源县| 兴业县| 陵川县| 宁夏| 大港区| 宕昌县| 交口县| 虞城县| 宜良县| 石林| 治县。| 蒲江县| 左贡县| 离岛区| 中超| 元氏县| 巫山县| 南昌市| 南汇区| 高碑店市| 司法| 巴东县| 集安市| 浑源县| 株洲县| 鄂温| 格尔木市| 景洪市| 济阳县| 夹江县| 桦南县| 九台市| 襄城县| 桐柏县| 郸城县|