首頁 > Java > java教程 > 主體

java執行緒詳解及執行緒與進程的區別

高洛峰
發布: 2017-01-19 11:25:46
原創
1514 人瀏覽過

java  執行緒詳解及執行緒與進程的差異

1.進程與執行緒

   每個進程獨享一塊記憶體空間,一個應用程式可以同時啟動多個進程。例如IE瀏覽器,開啟一個Ie瀏覽器就等於啟動了一個進程。

   執行緒指進程中的一個執行流程,一個行程可以包含多個執行緒。

   每個進程都需要作業系統為其分配獨立的記憶體空間,而同一個進程中的多個執行緒共享這塊空間,即共享記憶體等資源。

   每次呼叫java.exe的時候,作業系統都會啟動一個Java虛擬機進程,當啟動Java虛擬機進程時候,Java虛擬機都會建立一個主執行緒,該執行緒會從程式入口main方法開始執行。

  Java虛擬機每啟動一個線程,就會給該線程分配一個線程方法棧,用來存放相關資訊(例如局部變數等),線程就在這個棧上運行。所以Java物件中的局部變數都是執行緒安全的,但實例變數及類別變數由於不是保存在堆疊中,所以不是執行緒安全的。

  進程有三種狀態:就緒、執行、阻塞。

  

java執行緒詳解及執行緒與進程的區別

2.執行緒建立方式

   Runnable方式:(此種方式靈活,建議使用)

public class Thread02 implements Runnable {
  
  public static void main(String[] args) {
    Runnable r = new <strong>Thread02</strong>();
    Thread t1 = new Thread(<strong>r</strong>, "t1");
    /**
     *   Thread源码
     *   public Thread(Runnable target, String name) {
          init(null, target, name, 0);
             }
     */
    Thread t2 = new Thread(r, "t2");
    t1.start(); // 启动线程t1,处于就绪状态,等待cpu
    t2.start(); // 启动线程t2,处于就绪状态,等待cpu
    t1.run(); // 主线程main调用对象t1的run方法
  }
  
  public void run() {
    System.out.println("thread&#39;s name is "
        + Thread.currentThread().getName());
  }
  
}
登入後複製

運行結果:thread's name is Thread-0

注意:每次程式執行時除了自訂的執行緒外還有一個main執行緒。

 綜合:

thread&#39;s name is t1
thread&#39;s name is main
thread&#39;s name is t2
登入後複製
   

感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!

更多java線程詳解及線程與進程的區別相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板