- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例外处理与多执行绪
第 08 章 例外處理與多執行緒 8.1 程式偵錯 8.2 例外處理 8.3 多執行緒 8.4 繼承Thread類別建立執行緒 8.5 實作Runnable介面建立執行緒 8.6 實例 所謂「例外」,就是當程式碼編輯完,在編譯期間沒有出現錯誤訊息,但在程式執行時卻發生錯誤,這種錯誤又稱為執行時期錯誤。 所謂「多執行緒」,就是多工處理不同敘述區塊的程式碼,即可讓不同區塊的程式碼同時執行。 8.1 程式偵錯 在編譯程式或執行程式時常會遇到各種不同錯誤,以致無法正常完成工作。研發軟體時最容易遇到三種錯誤(Bug):語法錯誤、執行時期錯誤(Runtime error)、邏輯錯誤。 8.2 例外處理 當程式在執行時期發生錯誤或不正常狀況,稱之為例外(Exception)。進行例外處理是不希望程式中斷。而是希望程式能捕捉錯誤並繼續執行,若錯誤是使用者輸入不正確資料所造成的,可以要求使用者輸入正確資料再繼續執行,或者不處理使用者輸入資料繼續做其他工作。 Java使用 try … catch … finally 敘述來解決例外處理,它的方式是將被監視的敘述區段寫在try大括號內,當程式執行到try內的敘述有發生錯誤時,會逐一檢查捕捉(catch)該錯誤,以便執行該catch內敘述。最後不管是否有符合catch,都會執行最後的finally敘述區段。例外處理的格式如下: 8.3 多執行緒 目前電腦的作業系統都具有多工(Multi Task)的功能,也就是允許兩個以上應用程式同時執行。有間餐廳來了兩桌客人(每一桌至少有一個客人),他們分別點很多道菜。廚師分別為這兩桌上菜,讓他們感覺餐廳一直不停為他們服務。但是餐廳如果只有一個廚師,一組廚具,事實上廚師是輪流為他們炒菜,而不是同時炒兩道菜。只是炒菜速度夠快,客人吃菜速度不會太快,客人在吃飯過程就不會有等待感覺。如果廚師速度太慢,客人太多,就會有等待現象發生。解決這個問題就是聘請手腳靈活廚師,或者增加廚師,甚至找其他餐廳支援。這就是目前電腦CPU不斷增快,而且在同一電腦有兩個以上CPU,甚至多個電腦同時協力解決問題,尤其目前網路通暢,有人透過網路,結合網路幾千個萬個電腦來解決各種問題,使一個本來需要幾百年來運算的問題,能夠在短時間解決。 也有可能一桌客人(不只一個人)來餐廳吃飯,有的人要吃素,有的人不要吃素。因此餐廳為同一桌客人需同時準備兩種不同類型餐點,為客人輪流上菜。在應用程式中,若有二組A與B敘述區段彼此無關聯,也就是不一定要先執行A敘述區段才能執行B敘述區段,或者先執行B敘述區段,再執行A敘述區段。兩個敘述區段可以同時執行,Java可以讓這兩組A、B敘述區段各取一個名稱,稱為執行緒(Thread),讓A執行緒與B執行緒,同時執行。事實上與作業系統多工處理應用程式道理是相同的。 每個程式至少會有一個執行緒,Java在主程式類別中的main()方法,是執行Java程式的入口,寫在這方法內的程式流程,就是主執行緒。到目前為止,我們所學所用的程式碼都只有在這單一執行緒下執行程式。 但多執行緒,可以一次同時執行多個程式區段。Java提供兩種建立多執行緒的方式,一種是繼承Thread類別,一種是實作Runnable介面。在正式介紹兩個執行緒以上的程式之前,我們先來認識一些多執行緒常用的方法。如下: 1. void run():執行新執行緒 用來撰寫新建立執行緒的程式碼,其宣告變數、呼叫其它方法、使用 其它類別…等用法與main()相同。但main()是主執行緒的流程入口, 而本方法run()需要用start()方法來呼叫。 8.4 繼承Thread類別建立執行緒 使用繼承Thread類別來建立執行緒的方式,要有四個步驟,格式如下: 8.5 實作Runnable介面建立執行緒 一個類別只能繼承一個父類別,萬一要建立執行緒的類別必須繼承其它父類別而無法繼承Thread類別時,可用實作Runnable介面來建立執行緒。使用實作Runnable介面來建立執行緒的方式,有五個步驟,格式如下: 8.6 實例 1. 程式中好像只有一個執行緒,因只有一個run()方法,但是在第24、25行有兩個執行緒的進入口。而這兩個入口會各自執行自己的執行緒內容,彼此互不干擾。 2. 使用實作Runnable介面的方式來建立執行緒的方式,要有五個步驟。本程式的兩個執行緒共用了addThread類別,也共用了run()方法。但因傳入的參數值不同,而有不同的執行內容。這兩組五個步驟,分別出現在第01、08、20、22、24行和第01、08、21、23、25行。 3. 行20、22:可合併一行寫成 Thread t1 = new
文档评论(0)