Java——線程

來源:互聯網
上載者:User

標籤:

【進程】 

<1>進程是一個靜態概念(代碼載入到記憶體的代碼區,這就表示一個進程).

<2>線程是一個進程裡不同的執行路徑,機器上啟動並執行都是線程。<3>對於單個CPU而言,在同一個時間點上,CPU只支援一個線程運行。真正的多線程是雙CPU或雙核。 【進程與線程】 <1>每個進程都有獨立的代碼和資料空間(進程上下文),進程間的切換會有較大的開銷。<2>線程可以看成是輕量級的進程,同一類線程共用代碼和資料空間,每個線程有獨立的運行棧和程式計數器(PC),線程切換的       的開銷較小。<3>多進程在作業系統中能同時運行多個任務(程式)。<4>多線程在同一應用程式中有多個順序流同時執行。 【說明】 <1>Java的線程是通過java.lang.Thread類實現的。<2>VM啟動時會有一個由主方法(public static void main(){})定義的線程。<3>可以通過建立新的Thread執行個體建立新的線程(在實現對應介面的前提之下)。<4>每個線程都是通過某個特定Thread對象所對應的方法run()來完成其操作的,方法run()稱為線程體。<5>通過調用Thread類的start方法來啟動一個線程。 【線程的建立和啟動】 註:<1>在main方法繼續執行的情況下,運行線程(這兩個是交替運行或者說是並列運行)。       <2>這兩種方法推薦使用介面實現的方法,因為使用繼承之後不能再實現別的類(Java不支援多繼承),而實現一個介面之              後還能繼承類或實現別的介面,這樣便於實際中的應用(只要能使用介面就不要使用類繼承)。  【線程狀態轉換】 註:<1>調用start()方法時不一定就執行該線程,而是處於就緒狀態。       <2>調入到CPU後才處於運行狀態。 【線程常用方法】 註:<1>new出來之後還未start,這時是“死的”;就緒狀態、運行狀態、阻塞狀態都是“活的”。        【sleep/join/yield方法】   ----sleep方法  <1>可以調用Thread的 靜態方法:         public static void sleep(long mills)throws InterruptedException         //使得當前線程休眠(暫時停止mills毫秒)         //一定會拋出異常(處於睡眠狀態被喚醒時就是一個異常)  【程式】        public static void main(String[] args){             MyThread thread = new MyThread();             thread.start();             try { Thread.sleep(1000); }             catch(InterruptedException e){}             thread.interrupt();             //關閉線程(這種關閉方式不推薦,更不推薦使用stop,Windows進程殺死就是使用的該方法)        }          class MyThread extends Thread{                   public void run(){                         while(true){                              System.out.println(new Date());                              try{                                   sleep(1000);                               }catch(InterruptedException e){                                    return;                               }                    }            }      注意:這裡不能在run方法上拋出異常,因為run是重寫的方法,重寫的方法不能拋出與被重寫方法不一樣的異常,這裡只能                用try-catch語句。     <2>由於是靜態方法,sleep可以由類名直接調用:         Thread.sleep();   ----join方法  合并多個線程(相當於方法調用,不再是原來多線程中的同步運行)   ----yield方法  讓出CPU,給其他線程執行的機會。  【線程的優先順序】  <1>Java提供一個線程調度器來監控程式中啟動後進入就緒狀態的所有線程。        線程調度器按照線程的優先順序決定應調度哪個線程來執行。 <2>線程的優先順序用數字表示,範圍從1到10,一個線程的預設優先順序是5.        Thread.MIN_PRIORITY = 1;        Thread.MAX_PRIORITY = 10;        Thread.NORM_PRIORITY = 5; <3>使用下面的方法獲得或設定線程對象的優先順序:        int getPriority();        void setPriority(int newPriority); 【線程同步】            

Java——線程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.