想实现一个线程安全的队列,于是想到用LinkedList
但是
LinkedList lst = (LinkedList)Collections.synchronizedList(new LinkedList());
没有办法cast,不知道有什么方法或者好的建议。
因为是队列,所以想有push和pop的操作,LinkedList比较方便因为有addFist()和removeLast()!
谢谢!

解决方案 »

  1.   

    自己写个list,继承LinkedList,override方法的时候加上synchronized
      

  2.   

    想实现队列的话,最基本的list就可以啊!
    get(0)
    remove(size()-1)因为标准的办法就是用synchronizedList
      

  3.   

    最好还是直接写个List,继承LinkedList.
      

  4.   

    不知道继承的方法怎么写?
    因为同步的是两个不同功能的线程
    一个在最后写进去,一个读出来并删除第一个
    如果仅仅是synchronize方法的话,例如:
    复写的时候synchronized addLast()和synchronized removeFirst()这两个之间可能产生冲突,他们应该同步在同一个互斥体吧?
    大家讨论讨论啊
      

  5.   

    参考Collections里面的SynchronizedList
      

  6.   

    import java.util.*;
    public class TestLinkList
    {
    public static void main(String[] args)
    {
    java.util.LinkedList l = new LinkedList();

    synchronized (l)
    {
    .....
    }
    }
    }
      

  7.   

    synchronized (l)
    {
    .....
    }这个可以?