91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java進階(7) - 并發(多線程基本概念)

發布時間:2020-06-29 21:39:01 來源:網絡 閱讀:204 作者:lm8751 欄目:編程語言

一、中斷
interrupt方法只改變目標線程的中斷狀態(interrupt status),當線程處于 wait、sleep、join等狀態時
都在方法內部不斷地檢查中斷狀態的值,當調用interrupt會拋出InterruptedException異常。

interrupt方法
Thread實例方法: 必須由其它線程獲取被調用線程的實例后,進行調用。實際上,只是改變了被調用線程的內部中斷狀態;

Thread.interrupted方法
Thread類方法: 必須在當前執行線程內調用,該方法返回當前線程的內部中斷狀態,然后清除中斷狀態(置為false)

isInterrupted方法
Thread實例方法:用來檢查指定線程的中斷狀態。當線程為中斷狀態時,會返回true;否則返回false。

二、協調
wait set / wait方法
每個Java類的實例都有一個wait set,當對象執行wait方法時,當前線程就會暫停,并進入該對象的wait set
注: 當前線程若要執行obj.wait(),則必須先獲取該對象鎖。當線程進入wait set后,就已經釋放了該對象鎖。

notify方法
notify方法相當于從wait set中從挑出一個線程并喚醒。
下圖中線程A在當前實例對象的wait set中等待,此時線程B必須拿到同一實例的對象鎖,才能調用notify方法喚醒wait set中的任意一個線程。

notifyAll方法
notifyAll方法相當于將wait set中的所有線程都喚醒。

wait、notify、notifyAll這三個方法都是java.lang.Object類的方法(注意,不是Thread類的方法)。
若線程沒有拿到當前對象鎖就直接調用對象的這些方法,都會拋出java.lang.IllegalMonitorStateException異常。

  • obj.wait()是把當前線程放到obj的wait set;
  • obj.notify()是從obj的wait set里喚醒1個線程;
  • obj.notifyAll()是喚醒所有在obj的wait set里的線程。

三、線程的狀態轉移

  • 當創建一個Thread子類或實現Runnable接口類的實例時,線程進入【初始】狀態;
  • 調用實例的start方法后,線程進入【可執行】狀態;
  • 系統會在某一時刻自動調度處于【可執行】狀態的線程,被調度的線程會調用run方法,進入【執行中】狀態;
  • 線程執行完run方法后,進入【結束】狀態;
  • 處于【結束】狀態的線程,在某一時刻,會被JVM垃圾回收;
  • 處于【執行中】狀態的線程,若調用了Thread.yield方法,會回到【可執行】狀態,等待再次被調度;
  • 處于【執行中】狀態的線程,若調用了wait方法,會進入wait set并一直等待,直到被其它線程通過notify、notifyAll、interrupt方法喚醒;
  • 處于【執行中】狀態的線程,若調用了Thread.sleep方法,會進入【Sleep】狀態,無法繼續向下執行。當sleep時間結束或被interrupt時,會回到【可執行狀態】;
  • 處于【執行中】狀態的線程,若遇到阻塞I/O操作,也會停止等待I/O完成,然后回到【可執行狀態】

四、不可變模式
Immutable(不變的)參與者
Immutable參與者是一個字段值無法更改的類,也沒有任何用來更改字段值的方法。當Immutable參與者的實例建立后,狀態就完全不再變化。

適用場景:
Immutable模式的優點在于,“不需要使用synchronized保護”。而“不需要使用synchronized保護”的最大優點就是可在不喪失安全性與生命性的前提下,提高程序的執行性能。若例由多數線程所共享實,且訪問非常頻繁,Immutable模式就能發揮極大的優點。(final修飾變量性能高的原因之一)

參考:https://segmentfault.com/blog/ressmix_multithread?page=3

向AI問一下細節

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

AI

阿坝县| 兴宁市| 绵竹市| 双江| 崇明县| 虎林市| 台北县| 石城县| 阳江市| 天气| 汉阴县| 青川县| 泸水县| 湖北省| 闸北区| 隆昌县| 怀仁县| 吉首市| 永城市| 靖西县| 黄冈市| 玛曲县| 文化| 白沙| 永兴县| 台州市| 循化| 五指山市| 师宗县| 吉安县| 得荣县| 涟源市| 昌宁县| 准格尔旗| 迭部县| 济宁市| 前郭尔| 禄劝| 大安市| 金堂县| 永登县|