Java synchronizedList

這個函式是Collections類別的一個方法,為什麼要特別提出來呢?主因是我在看SCJP Java 6專業認證手冊(附光碟)這本書的第9章執行緒的部份有個範例:

import java.util.*;
public class NameList {
    private List names = Collections.synchronizedList(new LinkedList());
    public void add(String name) {
        names.add(name);
    }
    public String removeFirst() {
        if(names.size()>0)
            return (String)names.remove(0);
        else
            return null;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

這個範例出現了這樣錯誤:

The method synchronizedList(List<T>) in the type Collections is not applicable for the arguments (LinkedList)

很奇怪吧!這一本課本也有出錯的時候,查了一下這個函式,發現在Std. Ed. v1.4.2的時候定義是這樣:

synchronizedList(List list)
          Returns a synchronized (thread-safe) list backed by the specified list.

但是到了Standard Ed. 5.0時候,定義已經變成:

synchronizedList(List<T> list)
          Returns a synchronized (thread-safe) list backed by the specified list.

所以我在想終於被我發現到課本沒有隨著Java更新到SCJP 6喔!Bug!

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *