在 Java 程序中使用多線程要比在C或C++ 中容易得多這是因為 Java 編程語言提供了語言級的支持本文通過簡單的編程示例來說明 Java 程序中的多線程是多麼直觀讀完本文以後用戶應該能夠編寫簡單的多線程程序
為什麼會排隊等待?
下面的這個簡單的 Java 程序完成四項不相關的任務這樣的程序有單個控制線程控制在這四個任務之間線性地移動此外因為所需的資源 打印機磁盤數據庫和顯示屏 由於硬件和軟件的限制都有內在的潛伏時間所以每項任務都包含明顯的等待時間因此程序在訪問數據庫之前必須等待打印機完成打印文件的任務等等如果您正在等待程序的完成則這是對計算資源和您的時間的一種拙劣使用改進此程序的一種方法是使它成為多線程的 四項不相關的任務
在本例中每項任務在開始之前必須等待前一項任務完成即使所涉及的任務毫不相關也是這樣但是在現實生活中我們經常使用多線程模型我們在處理某些任務的同時也可以讓孩子配偶和父母完成別的任務例如我在寫信的同時可能打發我的兒子去郵局買郵票用軟件術語來說這稱為多個控制(或執行)線程 可以用兩種不同的方法來獲得多個控制線程
class myclass {
static public void main(String args[]) {
print_a_file();
manipulate_another_file();
access_database();
draw_picture_on_screen();
}
}
多個進程
在大多數操作系統中都可以創建多個進程當一個程序啟動時它可以為即將開始的每項任務創建一個進程並允許它們同時運行當一個程序因等待網絡訪問或用戶輸入而被阻塞時另一個程序還可以運行這樣就增加了資源利用率但是按照這種方式創建每個進程要付出一定的代價設置一個進程要占用相當一部分處理器時間和內存資源而且大多數操作系統不允許進程訪問其他進程的內存空間因此進程間的通信很不方便並且也不會將它自己提供給容易的編程模型
線程
線程也稱為輕型進程 (LWP)因為線程只能在單個進程的作用域內活動所以創建線程比創建進程要廉價得多這樣因為線程允許協作和數據交換並且在計算資源方面非常廉價所以線程比進程更可取線程需要操作系統的支持因此不是所有的機器都提供線程Java 編程語言作為相當新的一種語言已將線程支持與語言本身合為一體這樣就對線程提供了強健的支持
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27697.html