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

用多線程又有幾種常用的編程模型

2013-11-23 19:46:18  來源: Java高級技術 

  我這裡可以大概給你介紹一下但對於每一種編程模型要看具體的示例是什麼而且我不可能給你羅列所有的代碼請諒解
  
  其實我們編程只要盡量站到比較高的層次很多道理其實你會發現你已經懂了
  
  就多線程來說我們開始設想只有兩個線程(>時是不是算數學歸納法?)那麼如果兩個獨立的線程會發生什麼呢?
  
  當一個線程進入moniter(也就是說站用一個object)另一個線程只有等待或返回而我們把返回就稱為一種模式這種模式的英文是Balking
  
  這兩個線程可以是有序的執行而不是讓OS來調度這時我們要用一個object來調度這種模式稱為Scheduler(這個詞及其含義其實OS中就有)
  
  如果這兩個線程同時讀一個資源我們可以讓他們執行但如果同時寫的話你閉著眼睛都會知道可能出現問題這時我們就要用另一種模式(Read/Write Lock)
  
  如果一個線程是為另一個線程服務的話比如IE中負責數據傳輸的線程和界面顯示的線程當一個圖片沒有傳完時另一個線程就無法顯示至少是部分沒有傳完那麼這時我們要用一個模式稱為生產者和消費者英文是ProducerConsumer
  
  兩個線程的消亡也可以不是完全又OS來控制的這時我們需要給出一個條件使得每個線程在符合條件是才消亡也就是有序的消亡我們稱為TwoPhase Termination
  
  那麼有這個線程模型基本上可以用到大多數編程任務中我需要指出的三點是
  
  從高層次上我們可以再驗證是否含蓋了所有的情況
  
  其實模式不是完全固定的或者說象定律一樣而模式可以為不同的情況進行適當 的調整和組合目的是為了簡潔和高效
  
  學習模式是為了具備更好的分析問題的能力
  
  而似乎這些來自西方的技術並且是目前的我們有沒有呢?其實我個人有個大膽的推測我認為我們祖先的《孫子兵法》就是很好設計模式因為它符合設計模式需要的基本特征就是在特定的條件下用某種特定的方式合理且高效的解決問題只不過一是用在軍事上二是完備性方面我們還沒研究但我認為我們至少沒有很好的擴展和進行類比式的應用否則今天可能是我們中國人教外國人什麼是設計模式
  
  類比的方法實際上是發明或發現的常用方法不知能否讓你感覺到其實外國的技術並不是那麼的神秘也許我們從自身的文化當中挖掘出的東西太少了
  
  PS更深一步的研究你可以參考Doug Lea <>

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