讀java多線程編程核心技術總結__編程

來源:互聯網
上載者:User

第一章 java 多線程技能

進程是作業系統的結構基礎;是一次程式的執行。線程可以看成進程的一個子任務。線程可以通過繼承Thread類或者實現runnable介面來實現。介面的實現優於繼承。

停止線程可以通過拋異常,return;或者暴力手段stop();stop停止線程過於暴力,容易造成資料缺失,所以不建議

暫停線程suspend()和resume方法的使用 安全執行緒 通過synchronized同步方法實現 通過synchronize(監視器對象){}同步快來實現同步

髒讀:線程在讀取執行個體變數的時候,此值已經被其他線程更改了

當同步快出現異常時,鎖自動釋放

同步塊可以有效縮減同步的範圍,縮短已耗用時間提高效率。

靜態同步方法鎖定的是Class類。靜態同步方法對所有執行該方法是線程都是同步的

死結的原因是

互斥條件。即某個資源在一段時間內只能由一個進程佔有

不可搶佔條件。進程所獲得的資源在未使用完畢之前,資源申請者不能強行地從資源佔有者手中奪取資源

佔有且申請條件。進程至少已經佔有一個資源,但又申請新的資源;由於該資源已被另外進程佔有,此時該進程阻塞

迴圈等待條件。存在一個進程等待序列{P1,P2,...,Pn},其中P1等待P2所佔有的某一資源,P2等待P3所佔有的某一資源,以此類推


只要監視器對象沒有改變,監視器對象的屬性改變了,啟動並執行結果還是同步的 valatile關鍵字 valatile主要保證了成員變數的一個可見度,主要運用情境是迴圈條件的關鍵字 valatile和synchronized的比較: 1、valatile是線程同步的輕量級實現,在效能上肯定要好於synchronized 2、多線程訪問valitile不會發生阻塞,而synchronized會出現阻塞 3、valatile能保證資料的可見度,但是不能保證原子性,而synchronized 可以保證原子性,也可以間接保證可見度 4、valatile解決的是變數在多個線程之間的可見度,而synchronized關鍵字解決的是多個線程之間訪問資源的同步性
線程間通訊 wait()使線程停止運行,而notify使停止的線程繼續運行。
執行完wait()方法是立馬釋放鎖 notify()執行完同步代碼塊才會釋放鎖, 在執行同步代碼塊過程遇到異常也會釋放鎖
通過位元組流實現線程間通訊 PipedInputStream 和 PipedOutputStream PipedReader和PipedWriter
使用InputStream.connnect(OutputStream)使兩個stream之間產生通訊連結。
可以使用valatile修飾變數,用這個變數做開關實現交叉運行兩段代碼的目的。   join()方法釋放當前線程的鎖,sleep()佔有鎖不釋放,
類Threadlocal解決的是變數在不同線程間的隔離性,也就是不同線程擁有自己的值,不同線程的值是可以 儲存在Threadlocal進行儲存
lock的使用 reentrantlock在功能上更加強大,比如具有嗅探功能,多路分支通知功能,使用上更加靈活
reentrantlock調用lock()加鎖,一定要在finally{}模組中調用unlock()方法進行解鎖
使用condition實現等待/通知: 可以調用condition await()方法和signal()方法來實現 可以通過在調用reentrantLock構造器的時候傳入true和false來實現公平鎖和非公平鎖 使用condition實現順序執行 使用多個condition,每個condition服務於一個線程。再使用個靜態變數來控制喚醒指定的線程。
使用reentrantReadWriteLock可以加快運行效率,在某些不需要操作執行個體變數的方法中,完全可以使用讀寫鎖來提升該方法的代碼運行速度

定時器 Timer timer = new Timer() timer schedule(task,dateRef):在指定時間運行任務 TimeTask是以隊列的方式一個一個順序執行的 所以執行的時間有可能和預期的時間不一致,因為前面的任務如果耗時較長, 後面的任務已耗用時間就會順延。 timer schedule(task,datefirst,period)在指定時間以後周期性執行任務




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.