首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J2ME 多線程技術總結:三種實現方式與手機應用實戰模式

     編輯:Java 相關知識

J2ME (KVM) 提供完整 Java 多線程 API 子集,支援網路連線、UI 調度、遊戲迴圈等並發場景。本文系統整理繼承 Thread、實現 Runnable、Timer/TimerTask 三種實現方式與關鍵方法。

三種多線程實現方式

1. 繼承 Thread 類

public class MyThread extends Thread {
  public void run() {
    // 執行邏輯
  }
}
// 啟動
new MyThread().start();
  • 簡單直觀,適合獨立線程邏輯
  • `start()` 僅將線程置為可執行狀態,由 OS 調度實際運行

2. 實現 Runnable 介面


public class MyRunnable implements Runnable {
  public void run() {
    // 執行邏輯
  }
}
// 啟動
new Thread(new MyRunnable()).start();
  • 解耦任務邏輯與線程控制
  • 同一 `Runnable` 實例可提交多線程執行
  • 所有線程操作本質封裝在 `Thread` 類中

3. Timer / TimerTask 定時任務


public class MyTimerTask extends TimerTask {
  public void run() {
    // 定期執行邏輯
  }
}
// 調度
Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 3000);           // 3秒後執行一次
timer.schedule(new MyTimerTask(), 3000, 5000);     // 3秒後每5秒執行
// 取消
timer.cancel();
  • 適合週期性任務:心跳、輪詢、動畫幀更新
  • 單一 Timer 可調度多 TimerTask
  • 取消時機:`cancel()` 停止所有任務,`TimerTask.cancel()` 停止單一任務

Thread 核心方法速查

方法用途注意
`setPriority(int)`設定優先級 (1-10)調度非確定性,僅作提示
`sleep(long ms)`靜態方法,當前線程休眠拋 `InterruptedException`,需捕獲
`start()`啟動線程 (進入可執行態)非 `run()` 直接調用!
`run()`線程執行主體由 `start()` 間接觸發
`join()`等待線程終止可帶超時參數 `join(ms)`
`isAlive()`判斷是否存活
`yield()`讓出 CPU 時間片靜態方法,禮讓同優先級線程

手機應用實戰模式:按鍵響應非同步處理


public void commandAction(Command c, Displayable s) {
  if (c == do1Cmd) {
    // 網路操作:實現 Runnable
    new Thread(new NetworkRunnable()).start();
  } else if (c == do2Cmd) {
    // 本地計算:繼承 Thread
    new CalculationThread().start();
  } else {
    // 週期性更新:TimerTask
    new Timer().schedule(new UITimerTask(), 3000, 20);
  }
}

核心原則:MIDP 事件分發線程 (EDT) 必須極快返回,耗時操作 (HTTP、RMS 存儲、大量計算) 必須移至背景線程,否則導致 UI 凍結、按鍵無響應、甚至系統判定應用無反應強制殺掉。

J2ME 線程特殊考量

  • 資源極度受限:堆記憶體通常 1-2MB,線程棧極小,避免深度遞迴、大物件在線程間傳遞
  • 無線程池:頻繁創建/銷毀線程開銷大,核心長線程 (網路管理器、遊戲迴圈) 採用單例模式複用
  • 同步機制:`synchronized`、`wait/notify` 可用,但慎用避免死鎖
  • UI 線程安全:`Display.callSerially(Runnable)` 將 UI 更新安全排程至事件線程

從 J2ME 到 Android 的演進

J2MEAndroid核心變化
Thread / RunnableThread / Runnable / ExecutorService線程池標準化
TimerTaskHandler / ScheduledExecutorService更精確調度、生命週期綁定
callSeriallyrunOnUiThread / View.post同樣解決 UI 線程安全
無異步框架AsyncTask / Coroutines / RxJava結構化並發、取消傳播

J2ME 多線程基礎仍是理解移動端並發的基石,核心模式「事件線程不做重活」貫穿始終。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved