一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java中線程用法總結

Java中線程用法總結

2019-12-20 14:42liuzx32 JAVA教程

這篇文章主要介紹了Java中線程用法,實例總結了java中線程的常見使用技巧,需要的朋友可以參考下

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

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

2.線程的優勢:

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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指針溢出。不要將內部變量溢出,如:

?
1
2
3
4
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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 884hutv四虎永久7777 | 九九艹| 狠狠色婷婷丁香六月 | 很黄的网站在线观看 | 日韩欧美色图 | 日本动漫xxxxxx| japanese超丰满人妖 | 97色综合 | 香蕉免费一区二区三区在线观看 | 国内精品中文字幕 | 国产欧美一区二区三区久久 | 6080伦理久久精品亚洲 | 黑人又大又硬又粗再深一点 | 91大神在线观看精品一区 | 欧美久久综合网 | 被老外玩爽的中国美女视频 | 国产精品理论片 | 秋霞午夜视频 | 青草视频网站在线观看 | 国产伦码精品一区二区三区 | 国产精品俺来也在线观看了 | 精品国产乱码久久久久久人妻 | 成人免费视频一区 | 91av俱乐部| 国产肥女bbwbbw| 幻女free性俄罗斯第一次摘花 | 亚洲a区视频 | 99在线资源| 白丝打脚枪 | 天天摸天天爽视频69视频 | 青青成人福利国产在线视频 | 风间由美一区二区av101 | 日韩欧免费一区二区三区 | 调教老师肉色丝袜的故事 | 亚洲欧美日韩中文字幕久久 | 亚洲视频在线免费看 | 天天综合网网欲色 | 深夜成人 | 亚洲电影成人 成人影院 | 国内精品在线播放 | 国产最强大片免费视频 |