熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

多線程

2013-11-23 19:49:56  來源: Java高級技術 

  在計算機編程中一個基本的概念就是同時對多個任務加以控制許多程序設計問題都要求程序能夠停下手頭的工作改為處理其他一些問題再返回主進程可以通過多種途徑達到這個目的最開始的時候那些擁有機器低級知識的程序員編寫一些中斷服務例程主進程的暫停是通過硬件級的中斷實現的盡管這是一種有用的方法但編出的程序很難移植由此造成了另一類的代價高昂問題
  有些時候中斷對那些實時性很強的任務來說是很有必要的但還存在其他許多問題它們只要求將問題劃分進入獨立運行的程序片斷中使整個程序能更迅速地響應用戶的請求在一個程序中這些獨立運行的片斷叫作線程(Thread)利用它編程的概念就叫作多線程處理多線程處理一個常見的例子就是用戶界面利用線程用戶可按下一個按鈕然後程序會立即作出響應而不是讓用戶等待程序完成了當前任務以後才開始響應
  最開始線程只是用於分配單個處理器的處理時間的一種工具但假如操作系統本身支持多個處理器那麼每個線程都可分配給一個不同的處理器真正進入並行運算狀態從程序設計語言的角度看多線程操作最有價值的特性之一就是程序員不必關心到底使用了多少個處理器程序在邏輯意義上被分割為數個線程假如機器本身安裝了多個處理器那麼程序會運行得更快毋需作出任何特殊的調校
  根據前面的論述大家可能感覺線程處理非常簡單但必須注意一個問題共享資源!如果有多個線程同時運行而且它們試圖訪問相同的資源就會遇到一個問題舉個例子來說兩個進程不能將信息同時發送給一台打印機為解決這個問題對那些可共享的資源來說(比如打印機)它們在使用期間必須進入鎖定狀態所以一個線程可將資源鎖定在完成了它的任務後再解開(釋放)這個鎖使其他線程可以接著使用同樣的資源
  Java的多線程機制已內建到語言中這使一個可能較復雜的問題變得簡單起來對多線程處理的支持是在對象這一級支持的所以一個執行線程可表達為一個對象Java也提供了有限的資源鎖定方案它能鎖定任何對象占用的內存(內存實際是多種共享資源的一種)所以同一時間只能有一個線程使用特定的內存空間為達到這個目的需要使用synchronized關鍵字其他類型的資源必須由程序員明確鎖定這通常要求程序員創建一個對象用它代表一把鎖所有線程在訪問那個資源時都必須檢查這把鎖

From:http://tw.wingwit.com/Article/program/Java/gj/201311/27524.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.