• About Me
  • Java基礎教學
  • 部落格聯播

Java Thread簡介

分類: Java, 程式 時間:2009/7/13 瀏覽:15,256 瀏覽數 — 9 回應

Thread跟process是有點像又不太像的東西,

一樣是可以同時(?)進行多件事件的方式,但在行為上確不太一樣,

process可以想像是一個cpu,多process可以想成是多個cpu

不同的事件可以經由不同的process做處理,

Thread是在process上以時間做為分格來執行多種事件的方式,

Thread快速在不同事件中切換(同一時間只會執行一個Thread),讓使用者看似同時進行著,

也就是說在同一個時間點上Thread只會有一個,而process可能會有多個,

善用Thread會讓程式更加靈活,不過也可能會因為規畫不當,而讓Thread 暴掉,

底下先用一個簡單的例子說明,二個Thread各自執行的結果:


你可以implements java.lang.Runnable 或是 extends java.lang.Thread


public class TestThread extends java.lang.Thread {

  public long waittime;
  public String data;

  public TestThread(long waittime, String value) {
    this.waittime = waittime;
    this.data = value;
  }

  public void run()// 啟動Thread時會執行run
  {
    try {
      while (true) {// 永遠讓Thread執行下去,只有在強制中斷時才會失效
        // 停幾秒後執行System內容
        Thread.sleep(waittime);
        System.out.println(this.data);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  public static void main(String args[]) {
    // 1000毫秒 = 1秒
    // 用start 來啟動thread
    (new TestThread(3 * 1000, "Thread-1")).start();
    (new TestThread(1 * 1000, "Thread-2")).start();

  }
}

結果如下:(可能會有所不同)

Thread-2
Thread-2
Thread-1
Thread-2
Thread-2
Thread-2
Thread-1
Thread-2
Thread-2
Thread-2


Related Posts Plugin for WordPress, Blogger...

9 回應 to “Java Thread簡介”

PingBack List:

  1. Thread應用-Java SocketServer | 聰明的生活2
  1. 1
    阿富

    您好 , 請問可否引用你的 文章 我想PO在我的BLOG上

    這篇文章我覺得 對我來講很有用

    而這是我的引用處 如果有侵犯 請麻煩告知我嚕

    我會立即刪除

    謝謝您打這篇文章分享給我^^

    [回應]

  2. 2
    阿富

    抱歉我忘記把引用處 打給你了 >"<

    http://www.wretch.cc/blog/by020827/16609148

    [回應]

    yku Replay:

    當然可以,謝謝你會喜歡

    [回應]

  3. 3
    Gucci

    你的說法非常不專業!

    應該是如下:
    1.傳統的行程 (Process) 可以看成是只有一個 Thread 的行程
    2.在Multi-Thread的環境下,一個行程 (Process) 可以包含了多個 Thread
    3.Process與 Thread 最大的差別在於
    Process與Process之間所擁有的系統資源是互相獨立的。
    同一個Process的thread之間是可以共享部分系統資源的。

    你的觀念有很大的問題,可以去看看國外的作業系統的書,台灣的電腦技術書大都亂寫一通,互相抄襲嚴重,甚至比不上對岸的書籍

    [回應]

    yku Replay:

    謝謝您的指教

    [回應]

    Roger Replay:

    不知Gucci大是否有相關資訊可供大家參考?
    謝謝

    [回應]

  4. 4
    berberhuang

    Gucci大 說的沒錯

    資源個共享與否才是Process 與Thread間的最大差異

    而究竟是分時多工與否 是依實作版本與CPU能力而定

    [回應]

  5. 5
    葉子

    一個Process可以有多個Thread。

    同一個Process內的Thread使用相同的Memory Space,但這些Thread各自擁有其Stack。換句話說,Thread能透過reference存取到相同的Object,但是local variable卻是各自獨立的。

    作業系統會根據Thread的優先權以及已經用掉的CPU時間,在不同的Thread作切換,以讓各個Thread都有機會執行。

    [回應]

留下您想說的話:

*