奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

Java語言程序調試技巧與多線程問題

時間:2024-06-14 16:15:36 java語言 我要投稿
  • 相關推薦

Java語言程序調試技巧與多線程問題

  導語:Java是一種應用于互聯網的分布式環境的編程語言。Java語言易于使用,而且在編程時采用“以對象為導向”的方式。下面就由小編為大家介紹一下Java語言程序調試技巧與多線程問題,歡迎大家閱讀!

  1 JaVa語言學習常見技巧

  (1)勤動手:學編程語言要達到心領神會、融會貫通就必須勤動手。成功的軟件開發人員無不經過大量的上機鍛煉,只有理論和實踐相結合才能真正掌握編程技能。

  (2)多動腦:對于Java語言的學習,建議從一開始就用面向對象的思維方式去面對你所接觸的每件事。

  (3)閱讀API文檔:Java中的“類”用以滿足網絡化、多線程、面向對象的需要,它是Java編程過程中不斷利用的資源。Java的學習更多的是去學習和掌握它所提供的API類庫。對于所接觸到的類、方法,需要仔細去閱讀文檔的說明,再用自己編寫的實例去驗證。

  (4)規范編碼習慣:一個好的編程結構應該是能預防錯誤的發生,對錯誤的預見和錯誤出現以后的錯誤處理與異常處理的良好安排。經驗豐富的程序員,需要良好的編碼格式規范,而且程序中的邏輯實現要有一種良好的結構。

  (5)定義有意義類名:養成為每個類、每個方法起一個有意義的名字。在程序閱讀的過程中,看到這個名字就可以知道它要實現的功能。

  (6)添加適量注釋:注釋提高程序的可讀性和可維護性。作為一個軟件產品,其中不同的變量及方法可能很多,合理的注釋提高程序可讀性和維護性。

  2 Java程序調試常用技巧

  程序調試,是將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤的過程[1]。調試可以幫助識別和解決應用程序缺陷。

  (1)先簡后繁:先使用一個boolean量,如:debugMode,需要看看程序的輸出時可以使用:if(debugMode)System.out.println("..");在項目完畢后把debugMode變量設為false。

  (2)自頂向下:出現錯誤時,要逐步縮小可能出現錯誤的范圍,從整個程序到指定函數,再到指定行。如:Java-Ddebug=true MyClass,在使用這種方法時,必須在你所有的class中添加System.getProperty("debug")來取得調試標志,這樣在不更改source code的情況下可以直接修改Java程序調試標志。當錯誤比較麻煩時,可以定義一個用于調試的類。這樣對于一個application(Test)可以進行調用:boolean debug=DebugManager.getSystemDebug(applicationKey);

  要打開Test的調試功能,只需:java -DTest.Debug=true Test

  當然這個類可以進行進一步擴展,比如將其變為日志管理,控制調試信息的輸出位置等

  (3)設置斷點:斷點是程序運行中中斷的地方,旨在開發者在程序運行過程中查看程序當前的運行狀態。可以在測試時啟用斷言驗證,而在部署時禁用斷言驗證。a.條件斷點。加一個布爾條件,該斷點會被激活,條件為真,就會執行該斷點,否則將會跳過往下執行。b.異常斷點。程序在遇到空指針異常(NullPointerException)時,添加一個異常斷點,可以繼續調試程序。

  (4)單步執行程序:追蹤類里面的方法體的整個執行過程,不需要設置斷點就可以停止一個GUI程序的執行。設置斷點后在調試器里面開始執行程序,當碰到第一個斷點后,可以進入方法體或類體,也可以繼續運行直到下一個斷點或程序結束。

  3 Java應用程序常見多線程問題

  Java編程語言的多線程簡單有效,比其他語言更容易實現。Java程序包括客戶端和服務器端。常見的多線程問題包括活鎖、死鎖、隱性死鎖和數據競爭。

  (1)活鎖:當一個線程忙于接受新任務以致它永遠沒有機會完成任何任務時,就會發生活鎖。這個線程最終將超出緩沖區并導致程序崩潰。試想一個秘書需要錄入一封信,但她一直在忙于接電話,所以這封信永遠不會被錄入。

  (2)死鎖。當一個線程需要一個資源而另一個線程持有該資源的鎖時,就會發生死鎖。如何發現問題并解決之。1)防止死鎖的方法是對競爭的資源引入序號,如果一個線程需要幾個資源,那么它必須先得到小序號的資源,再申請大序號的資源。可以在Java代碼中增加同步關鍵字的使用,這樣可以減少死鎖,但這樣做也會影響性能。2)當進行嵌套的調用時,了解哪些調用使用了與其它調用同樣的數據庫連接。即使嵌套調用運行在同一個全局事務中,它仍將使用不同的數據庫連接,而不會導致嵌套死鎖。3)確保在峰值并發時有足夠大的資源池。4)避免執行數據庫調用或在占有Java虛擬機鎖時,執行其他與Java虛擬機無關的操作。

  (3)隱性死鎖:“占有并等待”還可能引發一連串的線程等待,例如,線程A占有線程B需要的鎖并等待,而線程B又占有線程C需要的鎖并等待等。

  (4)數據競爭:數據競爭是由于訪問共享資源時不適當地運用同步機制引起的。如果沒有正確地限定某一時刻某一個線程可以訪問變量,就會出現數據競爭,會導致不可預知的結果。由于線程的運行可以在任何時候被中斷(即運行機會被其它線程搶占),所以不能假定先開始運行的線程總是比后開始運行的線程先訪問到兩者共享的數據。另外,在不同的vm上,線程的調度方式也可能不同,從而使數據競爭問題更加復雜。

  多線程編程需要之前詳細設計系統,這樣能夠避免難以發現的死鎖的問題。死鎖在語言層面上不能解決,就需要一個良好設計來避免死鎖。

【Java語言程序調試技巧與多線程問題】相關文章:

Java多線程問題總結10-24

java語言的多線程08-29

Java多線程的開發技巧10-16

關于Java程序員面試中的多線程問題總結06-18

40個Java多線程問題總結07-06

java的多線程09-09

java多線程08-31

java多線程介紹08-23

java多線程教程11-03

關于Java多線程介紹09-09

主站蜘蛛池模板: 雷山县| 钟山县| 寻甸| 龙岩市| 梁山县| 平和县| 南投市| 滨海县| 本溪市| 罗定市| 石景山区| 达孜县| 平利县| 金平| 千阳县| 宁津县| 门头沟区| 巧家县| 枣强县| 桐柏县| 拜泉县| 余江县| 灵山县| 韶山市| 乐昌市| 湄潭县| 黑山县| 陇南市| 定边县| 竹溪县| 金溪县| 桐庐县| 抚顺市| 高平市| 枣强县| 内江市| 驻马店市| 诏安县| 高邑县| 定日县| 岑溪市|