J2ME 技術(shù)的學(xué)習(xí)與實(shí)踐者

          [導(dǎo)入]我在J2ME中用過的幾種后臺(tái)線程方法(如何選擇?)


          網(wǎng)站: JavaEye  作者: iwinyeah  鏈接:http://iwinyeah.javaeye.com/blog/172200  發(fā)表時(shí)間: 2008年03月15日

          聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

          我以前在其他地方發(fā)過的貼子,這幾種方式都沒問題,哪種較好或者說在什么情況下用哪種方法較好呢?
          // 方法一
          public class firstManager implements Runnable {
            public void runTask() {
             (new Thread(this)).start();
            }
            public void run() {
             System.out.println("\nfirst thread method!");
             // Do some thing ...
            }
          }
          // 方法二
          public class secondManager {
            private BackTask backTask;
            private Timer timer;
            public secondManager() {
             backTask = new BackTask();
             timer = new Timer();
            }
            public void runTask() {
             timer.schedule(backTask, 0);
            }
            private class BackTask extends TimerTask {
             public void run() {
              System.out.println("\nsecond thread method!");
              // Do some thing ...
             }
            }
          }
          // 方法三
          public class thirdManager {
            private BackTask backTask;
            private int cmd = 0;
            public thirdManager() {
             backTask = new BackTask();
             backTask.start();
            }
            public void runTask() {
             synchronized (backTask) {
              cmd = 1;
              backTask.notify();
             }
            }
            private class BackTask extends Thread {
             public void run() {
              while (true) {
               try {
                if (cmd == 0) {
                 synchronized (this) {
                  wait();
                 }
                 continue;
                }
                System.out.println("\nthird thread method!");
                // Do some thing ...
               } catch (Exception e) {
               }
               cmd = 0;
              }
             }
            }
          }
          
          // 用例
          public void main(){
            firstManager man1 = new firstManager();
            secondManager man2 = new secondManager();
            thirdManager man3 = new thirdManager();
            man1.runTask();
            man2.runTask();
            man3.runTask();
          }
          

          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來源:http://iwinyeah.javaeye.com/blog/172200

          posted on 2008-03-15 17:47 iwinyeah 閱讀(203) 評論(0)  編輯  收藏 所屬分類: Java 基礎(chǔ)知識(shí)

          主站蜘蛛池模板: 阳山县| 文成县| 宝应县| 石棉县| 石门县| 广丰县| 普洱| 崇仁县| 麻阳| 桑植县| 大方县| 绥中县| 临澧县| 焉耆| 土默特右旗| 雷山县| 剑河县| 昭平县| 小金县| 全南县| 赣州市| 高邮市| 任丘市| 南郑县| 仪陇县| 随州市| 祁门县| 宽甸| 荣昌县| 永宁县| 醴陵市| 会宁县| 嵊泗县| 台中县| 鄄城县| 平安县| 长宁区| 博罗县| 宁阳县| 紫阳县| 石渠县|