一个典型的多线程饥饿问题

最后修改于: 2016-05-24 16:42:59.0

昨天我听到有人说面试问双缓冲队列,略感好奇于是搜了一下这是个什么数据结构。

引用网上的一段话:

传统队列是生产者线程和消费者线程从同一个队列中存取数据,必然需要互斥访 问,在互相同步等待中浪费了宝贵的时间,使队列吞吐量受影响。双缓冲队使用两个队列,将读写分离,一个队列专门用来读,另一个专门用来写,当读队列空或写 队列满时将两个队列互换。这里为了保证队列的读写顺序,当读队列为空且写队列不为空时候才允许两个队列互换

看起来挺不错的,于是我就尝试着自己写一个出来。首先凭直觉把put和take方法写出来

    @Override
    public void put(T e

关于interrupt方法

最后修改于: 2016-03-31 23:10:51.0

interrupt方法属于Thread类,看字面意思是中断一个线程。实际上它的行为比较复杂,文档中是这么写的:

  • Unless the current      thread is interrupting itself, which is always permitted, thecheckAccessmethod of this      thread is invoked, which may cause aSecurityExceptionto be thrown.      
              If this thread is blocked in an invocation of the
    wa

关于我

男,1991年末出生,这个人很懒,其他的不想写了。
More about me

文章分类

其他玩意儿