中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Java語言規范線程形式的分析

發布時間:2021-11-20 18:08:06 來源:億速云 閱讀:116 作者:柒染 欄目:編程語言

如何進行Java語言規范線程形式的分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

在一開始接觸Java的時候我們沒有很注意Java語言規范,其實這是不對的。下面我們就來看看開始執行Java語言規范程序后,至少會有一個線程開始操作,有操作的是被稱為主線程的線程,主線程執行輸入類的main()。當main()里的所有處理均結束后,則主線程也同時結束。

當應用程序的規模大到一定程度,程序里的多線程會以每種形式存在。以下是幾個常見的范例:

1) GUI應用程序。

2) 比較花費時間的I/O處理。

3) 多個客戶端。

如欲啟動線程時,有下列兩種方法:

1) 利用Thread類的子類的實例,啟動線程。

2) 利用Runnable接口的實現類的實例,啟動線程。

要注意的是,“Thread的實例”和“線程本身”是兩個不同的部分。即使建立了Thread的實例,也還沒有啟動線程,而且就算線程已經結束,Thread實例也不會就這樣消失。

建立一個實現Runnable接口的類,將該類的實例傳給Thread的構造函數,調用start()...,這就是利用Runnable接口來啟動線程的方法。

記住:無論哪種方式,啟動新線程的方法永遠是Thread類的start()。

  • Java語言常見字符串注意事項

  • 淺析Java語言與C#語言

  • Java語言學習:概述

  • OSGi是什么:Java語言的動態模塊系統

  • 快速掌握PHP調用Java語言方法

利用Thread類的sleep()可以暫停線程的執行。執行下面的語句時,即可讓當前的線程(執行此語句的線程)暫時停止越1000ms。
Thread.sleep(1000);

當實例方法加上關鍵字synchronized聲明之后,就可以只讓一個線程操作某類實例的這類方法。“讓一個線程操作”并不是說只能讓某一個特定的線程操作而已,而是指一次只能讓一個線程執行。這種方法稱為synchronized方法(同步方法)。

synchronized實例方法是使用this鎖定去做線程的共享互斥。synchronized類方法是使用該類的類對象的鎖定去做線程的共享互斥。

Java語言規范線程的協調(這三種方法執行的前提是執行線程手中有obj的鎖):

1) obj.wait()是把現在的線程放到obj的wait set;

2) obj.notify()是從obj的wait set里喚醒一個線程;

3) obj.notifyAll()是喚醒所有在obj的wait set里的線程。

被喚醒的線程只是處于等鎖狀態(但已經不再wait set中了),當時的obj的鎖還掌握在執行notify()或notifyAll()的線程手上。當喚醒的線程得到鎖之后,將從wait()之后繼續執行。Introduction

Java語言規范多線程程序的評量標準

安全性--不損壞對象。

生存性--進行必要的處理。(liveness)

復用性--可再利用類。

性 能--能快速、大量進行處理。

Single Threaded Execution - 能通過這座橋的,只有一個人

Single Threaded Execution是指“以一個線程執行”的意思。就象細獨木橋只能允許一個人通過一樣,這個模式用來限制只讓一個線程運行。

在Single Threaded Execution Pattern中,我們將unsafeMethod加以防衛,限制同時只能有一個線程可以調用它(加上synchronized)。這個必須讓單線程執行的程序范圍,我們稱為“臨界區”(critical section)。

使用Single Threaded Execution Pattern時,可能會有發生死鎖(deadlock)的危險。

當SharedResource的字段開放給子類訪問時,可能會因為子類寫出unsafeMethod而導致喪失安全性。

synchronized方法和synchronized塊,無論碰到return或是異常,都會確實解除鎖定。

結論,Java語言規范中:

1) 基本類型、引用類型的指定、引用是原子的操作。

2) 但是long和double的指定、引用是可以分割的。

3) 要在線程間共享long或double的字段時,必須在synchronized中操作,或是聲明成volatile。

看完上述內容,你們掌握如何進行Java語言規范線程形式的分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康马县| 黄石市| 新邵县| 屯昌县| 昭觉县| 亳州市| 体育| 辰溪县| 同江市| 鹤山市| 读书| 浦城县| 晴隆县| 玉树县| 锦州市| 天门市| 神木县| 潞城市| 宜阳县| 旺苍县| 大邑县| 沅陵县| 醴陵市| 贵溪市| 蒙城县| 右玉县| 任丘市| 阿克陶县| 水城县| 台北市| 来宾市| 五家渠市| 陆良县| 于都县| 三都| 内乡县| 家居| 长沙县| 射洪县| 法库县| 营山县|