天天看點

回顧以前的線程安全的類

回顧前面的線程安全問題(看看源碼)

  StringBuffer/StringBuilder

  Vector

  Hashtable

  以及Collections中的讓集合同步的方法

示例代碼如下:

1 package cn.itcast_12;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.Hashtable;
 6 import java.util.List;
 7 import java.util.Vector;
 8 
 9 public class ThreadDemo {
10     public static void main(String[] args) {
11         // 線程安全的類
12         StringBuffer sb = new StringBuffer(); // 幾乎所有的方法都加了synchronized,是以線程安全,但效率低。
13         Vector<String> v = new Vector<String>(); // 幾乎所有的方法都加了synchronized,是以線程安全,但效率低。
14         Hashtable<String, String> h = new Hashtable<String, String>(); // 幾乎所有的方法都加了synchronized,是以線程安全,但效率低。
15 
16         // Vector是線程安全的時候才會去考慮使用的,但是呢,即使要安全,也不用Vector。
17         // 為什麼呢?那麼到底用誰呢?
18         // Collections工具類的讓集合同步的方法,以List舉例:
19         // public static <T> List<T> synchronizedList(List<T> list)
20         List<String> list1 = new ArrayList<String>(); // 線程不安全的List
21         List<String> list2 = Collections.synchronizedList(new ArrayList<String>()); // 線程安全的List
22         // 通過Collections類的讓集合同步的方法,就把線程不安全的List變成線程安全的List了,是以我們不用Vector!
23     }
24 }      
回顧以前的線程安全的類

我的GitHub位址:

https://github.com/heizemingjun

我的部落格園位址:

http://www.cnblogs.com/chenmingjun

我的螞蟻筆記部落格位址:

http://blog.leanote.com/chenmingjun

Copyright ©2018 黑澤明軍

【轉載文章務必保留出處和署名,謝謝!】

繼續閱讀