• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    解析Java的多線程機制

    發布: 2009-12-30 10:49 | 作者: 不詳 | 來源: 領測軟件測試網采編 | 查看: 91次 | 進入軟件測試論壇討論

    領測軟件測試網

      {

      float fBalance;

      public synchronized void deposit(float fFees){ fBalance += fFees; }

      public synchronized void withdraw(float fFees){ fBalance -= fFees; }

      … …

      }

      從經過線程同步機制定義后的代碼形式可以看出:在對共享資源進行訪問的方法訪問屬性關鍵字(public)后附加同步定義關鍵字 synchronized,使得同步方法在對共享資源訪問的時候,為這些敏感資源附加共享鎖來控制方法執行期間的資源獨占性,實現了應用系統數據資源的一 致性管理和維護。

      五、 Java線程的管理

      線程的狀態控制

      在這里需要明確的是:無論采用繼承Thread類還是實現Runnable接口來實現應用程序的多線程能力,都需要在該類中定義用于完成實際功能的 run方法,這個run方法稱為線程體(Thread Body)。按照線程體在計算機系統內存中的狀態不同,可以將線程分為創建、就緒、運行、睡眠、掛起和死亡等類型。這些線程狀態類型下線程的特征為:

      創建狀態:當利用new關鍵字創建線程對象實例后,它僅僅作為一個對象實例存在,JVM沒有為其分配CPU時間片等線程運行資源;

      就緒狀態:在處于創建狀態的線程中調用start方法將線程的狀態轉換為就緒狀態。這時,線程已經得到除CPU時間之外的其它系統資源,只等JVM的線程調度器按照線程的優先級對該線程進行調度,從而使該線程擁有能夠獲得CPU時間片的機會。

      睡眠狀態:在線程運行過程中可以調用sleep方法并在方法參數中指定線程的睡眠時間將線程狀態轉換為睡眠狀態。這時,該線程在不釋放占用資源的情況下停止運行指定的睡眠時間。時間到達后,線程重新由JVM線程調度器進行調度和管理。

      掛起狀態:可以通過調用suspend方法將線程的狀態轉換為掛起狀態。這時,線程將釋放占用的所有資源,由JVM調度轉入臨時存儲空間,直至應用程序調用resume方法恢復線程運行。

      死亡狀態:當線程體運行結束或者調用線程對象的stop方法后線程將終止運行,由JVM收回線程占用的資源。

      在Java線程類中分別定義了相應的方法,用于在應用程序中對線程狀態進行控制和管理。

      線程的調度

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>