線程,java線程

來源:互聯網
上載者:User

線程,java線程

多任務處理有兩種類型:
--基於進程
--基於線程

進程:是指一種“自包容”的運行程式,由作業系統直接管理,直接運行,有自己的地址空間,每個進程一開啟都會消耗記憶體。

線程:是進程內部單一的順序控制流程。一個進程擁有多個線程。多個線程共用一個進程的記憶體空間。


主線程:

main方法一運行,就開啟主線程。
主線程特點:
1、最先開始
2、最後結束
3、可以開啟其他的子線程
4、回收資源


建立線程的方式:
方式一: 繼承Thread類,然後重寫run()方法。
方式二: 實現Runnable介面,實現run()。

線程中start方法和run方法的區別:
      啟動線程,應該調用線程類的start()方法,是在主線程之外,另外建立子線程。主線程和子線程交替運行。
如果直接調用run()方法,不會單獨建立子線程,是普通方法調用,會在run()執行完畢以後,再去執行其他代碼。

 1 package 線程; 2  3  4  5 public class ThreadTest { 6     public static void main(String[] args) { 7          8         //方式一線程  測試 9         OneThread on=new OneThread();10         //啟動線程。線程啟動後,會調用Thread類的run()11         on.start();12         //只是普通的該方法調用,只有該方法執行完後才會執行其他方法13         on.run();14         //方式二線程  測試15         TwoThread two=new TwoThread();16         //以Runnable 介面實作類別作參數,表示線程啟動後,會調用Runnable實作類別的run()17         Thread th=new Thread(two);18         th.start();19         20         for (int i = 0; i <10; i++) {21             System.out.print(i+" ");            22             try {23                 //休眠,讓當前線程休眠500毫秒,然後繼續執行24                 Thread.sleep(500);25             } catch (InterruptedException e) {26                 // TODO Auto-generated catch block27                 e.printStackTrace();28             }29         }30     }31 32 }33 /**34  * 建立線程       方式一35  * @author Administrator36  *37  */38 class OneThread extends Thread{39 40     @Override41     public void run() {42         for (int i = 10; i < 20; i++) {43             System.out.print(i+" ");44             try {45                 Thread.sleep(500);46             } catch (InterruptedException e) {47                 // TODO Auto-generated catch block48                 e.printStackTrace();49             }50         }51     }    52 }53 /**54  * 建立線程       方式二55  * @author Administrator56  *57  */58 class TwoThread implements Runnable{59 60     @Override61     public void run() {62         for (int i = 20; i <30; i++) {63             System.out.print(i+" ");64         }65         try {66             Thread.sleep(500);67         } catch (InterruptedException e) {68             // TODO Auto-generated catch block69             e.printStackTrace();70         }71     }72 }    

 

線程狀態:
     建立: 通過new的方式產生一個線程對象
     就緒: start啟動,運行run方法
     運行: 執行run方法
     死亡: 線程run()方法執行完畢
     睡眠: 調用線程sleep()方法
     等待: 調用Object的wait()方法
     掛起:調用yield()方法,線程顯示出讓CPU控制權。
     阻塞: 等待IO事件輸入。如JOptionPane輸入框

線程優先順序:
      當兩個或兩個以上的線程同時處理就緒狀態,那麼優先順序高的線程,會優先得到執行。線程的優先順序分為10級,預設為5級。數字越大,優先順序越高。在開發中可以通過Thread類的setPriority()改變優先順序。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.