1. 程式人生 > >AJPFX: Java基礎多線程(一)

AJPFX: Java基礎多線程(一)

ava java web 有一點 設置 process 理解 分配 java學習 執行

 多線程是Java學習的非常重要的方面,是每個Java程序員必須掌握的基本技能。本文只是多線程細節、本質的總結,並無代碼例子入門,不適合初學者理解。初學者學習多線程,建議一邊看書、看博文,以便寫代碼嘗試。   一、進程   進程是操作系統結構的基礎;是一次程序的執行;是一個程序及其數據在處理機上順序執行時所發生的活動。操作系統中,幾乎所有運行中的任務對應一條進程(Process)。一個程序進入內存運行,即變成一個進程。進程是處於運行過程中的程序,並且具有一定獨立功能。描述進程的有一句話非常經典——進程是系統進行資源分配和調度的一個獨立單位。   進程是系統中獨立存在的實體,擁有自己獨立的資源,擁有自己私有的地址空間。進程的實質,就是程序在多道程序系統中的一次執行過程,它是動態產生,動態消亡的,具有自己的生命周期和各種不同的狀態。進程具有並發性,它可以同其他進程一起並發執行,按各自獨立的、不可預知的速度向前推進。  (註意,並發性(concurrency)和並行性(parallel)是不同的。並行指的是同一時刻,多個指令在多臺處理器上同時運行。並發指的是同一時刻只能有一條指令執行,但多個進程指令被被快速輪換執行,看起來就好像多個指令同時執行一樣。)   進程由程序、數據和進程控制塊三部分組成。 二、線程   線程,有時被稱為輕量級進程(LightweightProcess,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。   線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。   在Java Web中要註意,線程是JVM級別的,在不停止的情況下,跟JVM共同消亡,就是說如果一個Web服務啟動了多個Web應用,某個Web應用啟動了某個線 程,如果關閉這個Web應用,線程並不會關閉,因為JVM還在運行,所以別忘了設置Web應用關閉時停止線程。

AJPFX: Java基礎多線程(一)