Java編程語言自身缺點還需要改善
Java編程語言如何驗證自己的問題所在呢?這些問題需要我們不斷的學習相關語言語法,下面我們就來仔細的研究一下有關Java編程語言容易發(fā)生的問題。希望大家在以后的使用中注意。
一般來說,很難按照普通的規(guī)范對 Java編程語言的多線程程序進行驗證。同樣,開發(fā)自動化工具對于常見的并發(fā)問題(例如死鎖、活動鎖和資源耗盡)進行完整而簡單的分析也不太容易——特別是在任意 Java編程語言程序中或者在缺乏并發(fā)的正式模型的時候。
更糟的是,并發(fā)性問題出了名的變化多端、難于跟蹤。每個 Java 開發(fā)人員都曾經(jīng)聽說過(或者親自編寫過)這樣的 Java 程序:經(jīng)過嚴格分析,而且正常運行了相當一段時間,沒有表現(xiàn)出潛在的死鎖。然后突然有一天,問題發(fā)生了,結果弄得開發(fā)團隊經(jīng)歷許多的不眠之夜來試圖發(fā)現(xiàn)并修補根本原因。#t#
一方面,多線程 Java編程語言程序容易發(fā)生的錯誤非常不明顯,有可能在任意什么時候發(fā)生。另一方面,完全有可能這些 bug 在程序中從不出現(xiàn)。問題取決于一些不可知的因素。多線程程序的復雜本質,使得人們很難有效地對其進行驗證。沒有一套現(xiàn)成的規(guī)則可以找出多線程代碼中的這類問題,也無法確切地證明這些問題不存在,這些導致許多 Java編程語言 開發(fā)人員完全避開多線程應用程序的設計和開發(fā),即使用并發(fā)和并行的方式對系統(tǒng)進行建模會非常棒,他們也不使用多線程。
確實想進行多線程編程的開發(fā)人員通常準備好了以下一個或兩個解決方案(至少是一部分):
長時間艱苦地測試代碼,找出所有出現(xiàn)的并發(fā)性問題,誠心地希望到應用程序真正運行地時候已經(jīng)發(fā)現(xiàn)并修復了所有這類問題。
大量運行設計模式和為多線程編程建立的指導原則。但是,這類指導原則只在整個系統(tǒng)都按照它們的規(guī)范設計的時候才有效,沒有設計規(guī)則能夠覆蓋所有類型的系統(tǒng)。
雖然知道的人不多,但是對于編寫(然后驗證)正確的多線程應用程序這一問題,還有第三個選項。使用稱為通信順序進程( Communicating Sequential Processes,CSP)的精確的線程同步的數(shù)學理論,可以在設計時***地處理死鎖和活動鎖之類的問題。CSP 由 C.A.R. Hoare 與 20 世紀 70 年代后期設計,CSP 提供了有效的方法,證明用它的構造和工具構建的系統(tǒng)可以免除并發(fā)的常見問題。
在這份面向 Java編程語言 程序員的 CSP 全面介紹中,我把重點放在克服多線程應用程序開發(fā)常見問題的***步上,即了解這些問題。我介紹了 Java編程語言 平臺上目前支持的多線程編程構造,解釋了它們的起源,討論了這類程序可能會有的問題。我還解釋了用正式理論在任意的、大型的和復雜的應用程序中清除這些問題(即競爭冒險、死鎖、活動鎖和資源耗盡)或者證明這些問題不存在的困難。