作者
Neel V
Kumar
程序中使用多線程要比在 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/27412.html