中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Java中多線程原理詳解

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
學(xué)過Java的人都知道,Java是少數(shù)的集中支持多線程的語言之一,大多數(shù)的語言智能運行單獨的一個程序塊,無法同時運行不同的多個程序塊,Java的多線程機制彌補了這個缺憾,他可以讓不同的程序塊一起運行,這樣可以讓程序運行更加順暢,同時也達(dá)到了多任務(wù)處理的目的:

  一、線程和進(jìn)程的概念

  現(xiàn)在的操作系統(tǒng)是多任務(wù)操作系統(tǒng)。多線程是實現(xiàn)多任務(wù)的一種方式。

  進(jìn)程是程序的一個動態(tài)執(zhí)行過程,是指一個內(nèi)存中運行的應(yīng)用程序,每個進(jìn)程都有自己獨立的一塊內(nèi)存空間,一個進(jìn)程中可以啟動多個線程。比如在Windows系統(tǒng)中,一個運行的exe就是一個進(jìn)程。線程是指進(jìn)程中的一個執(zhí)行流程,一個進(jìn)程中可以運行多個線程。比如java.exe進(jìn)程中可以運行很多線程。線程總是屬于某個進(jìn)程,進(jìn)程中的多個線程共享進(jìn)程的內(nèi)存!巴瑫r”執(zhí)行是人的感覺,在線程之間實際上輪換執(zhí)行。

  二、Java中線程的實現(xiàn)

  在Java中藥想實現(xiàn)多線程有兩種手段,一種是集成Thread類,另一種就是實現(xiàn)Runnable接口。下面看繼承自Thread類線程的創(chuàng)建原理:

  首先定義一個線程類 該類必須繼承自Thread類,同時必須明確的覆寫run()方法

  如:

class MyThread extends Thread{

  public void run(){ //覆寫Thread類中的run方法此方法是線程中

  線程主體; 的主體

  }

然后定義一個主類,實例化線程類的對象,發(fā)動啟動線程的命令

如:

public class ThreadText{

  public stataic void main(String args[]){

  MyThread m1=new MyThread();//實例化對象

  m1.start();//啟動多線程

  }

  };

 實現(xiàn)Runnable接口:

  首先定義一個線程類繼承自Runnable接口

  如:

class MyThread implements Runnable{

  public void run(){ //覆寫Runnable接口中的run方法

  線程主體;

  }


 然后定義一個主類,實例化線程類的對象,發(fā)動啟動線程的命令

  如: 

public class ThreadText{

  public stataic void main(String args[]){

  MyThread m1=new MyThread();//實例化Runnable子類對象

  Thread t1=new Thread(m1);//實例化Thread類對象

  t1.start();//啟動多線程

  }

  };


  三、線程的幾種狀態(tài)

  在Java當(dāng)中,線程通常都有五種狀態(tài),創(chuàng)建、就緒、運行、阻塞和死亡。

  第一是創(chuàng)建狀態(tài)。在生成線程對象,并沒有調(diào)用該對象的start方法,這是線程處于創(chuàng)建狀態(tài)。

  第二是就緒狀態(tài)。當(dāng)調(diào)用了線程對象的start方法之后,該線程就進(jìn)入了就緒狀態(tài),但是此時線程調(diào)度程序還沒有把該線程設(shè)置為當(dāng)前線程,此時處于就緒狀態(tài)。在線程運行之后,從等待或者睡眠中回來之后,也會處于就緒狀態(tài)。

  第三是運行狀態(tài)。線程調(diào)度程序?qū)⑻幱诰途w狀態(tài)的線程設(shè)置為當(dāng)前線程,此時線程就進(jìn)入了運行狀態(tài),開始運行run函數(shù)當(dāng)中的代碼。

  第四是阻塞狀態(tài)。線程正在運行的時候,被暫停,通常是為了等待某個時間的發(fā)生(比如說某項資源就緒)之后再繼續(xù)運行。sleep,suspend,wait等方法都可以導(dǎo)致線程阻塞。

  第五是死亡狀態(tài)。如果一個線程的run方法執(zhí)行結(jié)束或者調(diào)用stop方法后,該線程就會死亡。對于已經(jīng)死亡的線程,無法再使用start方法令其進(jìn)入就緒。

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:ASP.NET性能監(jiān)控和優(yōu)化入門

下一篇:iOS 性能調(diào)優(yōu),成為一名合格 iOS 程序員必須掌握