什么是線程?

發表于:2007-07-14來源:作者:點擊數: 標簽:
什么是線程? 究竟什么是線程呢?正如在圖A中所示,一個線程是給定的指令的序列 (你所編寫的代碼),一個棧(在給定的方法中定義的變量),以及一些共享數據(類一級的變量)。線程也可以從全局類中訪問靜態數據。 棧以及可能的一些共享數據 每個線程有其自己的堆

什么是線程?

究竟什么是線程呢?正如在圖A中所示,一個線程是給定的指令的序列 (你所編寫的代碼),一個棧(在給定的方法中定義的變量),以及一些共享數據(類一級的變量)。線程也可以從全局類中訪問靜態數據。


棧以及可能的一些共享數據



每個線程有其自己的堆棧和程序計數器(PC)。你可以把程序計數器(PC)設想為用于跟蹤線程正在執行的指令,而堆棧用于跟蹤線程的上下文,上下文是當線程執行到某處時,當前的局部變量的值。雖然你可以編寫出在線程之間傳送數據的子程序,在正常情況下,一個線程不能訪問另外一個線程的棧變量。

一個線程必須處于如下四種可能的狀態之一,這四種狀態為:

初始態:一個線程調用了new方法之后,并在調用start方法之前的所處狀態。在初始態中,可以調用start和stop方法。
Runnable:一旦線程調用了start 方法,線程就轉到Runnable 狀態,注意,如果線程處于Runnable狀態,它也有可能不在運行,這是因為還有優先級和調度問題。 阻塞/ NonRunnable:線程處于阻塞/NonRunnable狀態,這是由兩種可能性造成的:要么是因掛起而暫停的,要么是由于某些原因而阻塞的,例如包括等待IO請求的完成。 退出:線程轉到退出狀態,這有兩種可能性,要么是run方法執行結束,要么是調用了stop方法。
最后一個概念就是線程的優先級,線程可以設定優先級,高優先級的線程可以安排在低優先級線程之前完成。一個應用程序可以通過使用線程中的方法setPriority(int),來設置線程的優先級大小。
前面我們已經講述了線程的基本知識,現在我們可以來看看Java為我們提供的用來開發基于線程的應用程序的兩種機制:線程類和Runnable 接口。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97