DANCE WITH JAVA

          開發出高質量的系統

          導航

          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          隨筆分類(277)

          隨筆檔案(238)

          閱讀排行榜

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          Effective Java 6-7

          六,避免使用終結(finalizer)函數
          原因:終結函數通常是不可預測的,一般情況下不要使用,使用的結果會帶來很多問題,不穩定,性能差,移植問題等等。
          分析原因:
          1,從一個對象不可到達到它的終結函數被執行,這段時間是任意的,不確定的,所以時間關鍵的系統不應該使用終結函數。
          2,及時的執行終結函數是垃圾回收算法決定的,這種算法在不同的JVM實現中會大相徑庭,使用終結函數的結果就是導致移植性問題
          3,如果執行終結函數的線程一直低于當前的線程的優先級,很可能造成占用大量內存,極端情況是出現OutOfMemoryError
          4,JSL不保證終結函數一定被執行,所以不要依賴終結函數來更新關鍵性的永久狀態,例如數據庫的永久鎖
          5,不要相信System.gc()??? System.runFinalization這兩個函數,它們只能提高終結函數的執行機會,并不保證一定執行。唯一保證一定執行的是System.runFinalizersOnExit喝Runtime.runFinalizersONExit()但這兩個方法已經被聲明不建議使用.
          6,一個在終結函數中的一場不會打出任何信息
          七:在改寫equals方法的時候遵守通用約定
          分析:
          1,有些情況下不要隨意改寫equals
          (1),一個類的每個實例本質上是唯一的,例如Thread
          (2),不管新一個類是否提供了“邏輯相等”的測試功能,例如java.util.Random
          (3),超類已經改寫了equals,從超類繼承過來的行為對于子類也是適合的 例如Set從AbstractSet繼承了equals
          (4),一個類是私有的,或者是包級私有的,并且確定它的equals方法永遠不會被調用
          2, 通用的約定
          自反性:? 對于任意的引用值x ,x.equals(x)一定為true
          對稱性:? 對于任意的引用值x,y? x.equals(y)返回true是 y.equals(x)也一定返回true
          傳遞性:對于任意的引用值x,y,z? 如果x.equals(y)返回true?并且y.equals(z)返回true 那么 x.equals(z)也一定是true
          一致性:對于任意的x,y如果x,y沒有被更改,調用任意多次x.equals(y)返回的結果應該一樣。
          非空性:對任意的引用x ,x.equals(null)一定返回false
          3不要將equals聲明中的Object對象換成別的類型
          4,不要讓equals方法依賴不可靠資源


          posted on 2007-01-30 22:09 dreamstone 閱讀(720) 評論(1)  編輯  收藏 所屬分類: jdk相關

          評論

          # re: Effective Java 6-7 2007-01-31 09:04 ant

          謝謝樓主的分享!
          希望這樣的專題可以繼續下去,期待!  回復  更多評論   

          主站蜘蛛池模板: 渑池县| 烟台市| 岳池县| 昌吉市| 乐业县| 横山县| 马山县| 江口县| 盈江县| 阳朔县| 平罗县| 罗甸县| 西昌市| 绥宁县| 齐河县| 根河市| 泽普县| 页游| 河西区| 武安市| 乌海市| 南木林县| 理塘县| 伊春市| 临泽县| 溧阳市| 定结县| 平定县| 大邑县| 贵德县| 响水县| 武鸣县| 苏尼特左旗| 孝义市| 阜阳市| 铁力市| 靖宇县| 长汀县| 信丰县| 通化县| 密山市|