国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中線程用法總結

2019-11-26 15:09:46
字體:
來源:轉載
供稿:網友

本文實例總結了Java中線程用法。分享給大家供大家參考。具體分析如下:

1.線程是基本調度單元。共享進程的資源,如內存和文件句柄。但有自己的pc(程序計數器),stack(線程棧)及本地變量

2.線程的優勢:

a) 充分利用多處理器
b) 可以簡化模型。特定任務給特定線程。如servlets及rmi等框架。
c) 對異步事件的簡單處理。如socket,nio使用更復雜。而現在的操作系統支持更大數量的線程。
d) 界面的更佳響應

3.內部鎖:synchronized塊。互斥。可重入(reentrancy),這樣的設計可以避免死鎖

4.內存可見性:因為編譯器的優化,線程并不和你看到的一樣。

public class NoVisibility {private static boolean ready;private static int number;private static class ReaderThread extends Thread { public void run() {  while (!ready)   Thread.yield();   System.out.println(number);  }}public static void main(String[] args) { new ReaderThread().start(); number = 42; ready=true;}}

可能打印0,或者一直循環。因為重排序了

5.volatile:可以解決內存可見性,對syncronized性能更佳,但僅此而已,如不能保證a++的原子性

6.溢出(escape):不要在構造函數中將this指針溢出。不要將內部變量溢出,如:

class Test {private String[] list = new String[] {};public String[] getList() {return list;}}

7.線程封閉:把對象封閉在一個線程中,無論對象是否是線程安全的,都能保證線程安全

a) statck限制。即只有本地變量能訪問該對象。
b)ThreadLocal。

8.不可變對象。一定是線程安全的。不可變對象必須滿足:

a) 狀態不能在創建后修改。
b) 所以的域都是final
c) 正確創建對象,沒有this指針溢出

9.安全發布

a) 通過static初始化對象
b) 使用volatile或AtomicReference
c) 將引用存儲于正確創建的對象的final域
d) 使用鎖

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉安县| 陵川县| 东丽区| 遂平县| 东乌珠穆沁旗| 汉源县| 海兴县| 横峰县| 慈利县| 祥云县| 江川县| 神木县| 五原县| 土默特右旗| 巫溪县| 治多县| 普安县| 陆丰市| 东阿县| 根河市| 仁化县| 昆山市| 高台县| 孝感市| 泽州县| 洛宁县| 仙游县| 曲松县| 浦江县| 勐海县| 土默特右旗| 德保县| 特克斯县| 天门市| 开平市| 永州市| 阳春市| 通州市| 古交市| 永宁县| 平武县|