使用阻塞队列问题在线程之间共享数据

时间:2012-12-21 14:20:24

标签: java multithreading concurrency

protected BlockingQueue<DataPack> queue = new ArrayBlockingQueue<DataPack>(1024);

我一直在使用上面的代码已经有一段时间了,我从来没有完全理解它,我的意思是我知道如何使用它来做我需要做的事情,但我不知道arrayblockingqueue和任何类型之间的差异也许会有人介意解释这一点,并解释何时使用每一个。你也介意给我一些关于这个和更好的替代品的速度的信息,如果有的话,我是否有机会丢失数据? (我可能会丢失一些数据,但我很可能会丢失10%的数据。)

由于

1 个答案:

答案 0 :(得分:0)

你不会丢失任何数据。该队列存在于进程中,并且只保存由一个线程插入的对象引用,并由一秒进行。它是一个普通的Java集合,但具有同步(线程感知/线程安全)的mutators。

关于速度,我怀疑任何差异都可以忽略不计。与以往一样,您应该测量它是否值得关注,但我怀疑您有两个线程意味着您在其他地方有延迟,并且队列的存在不会对此产生任何影响。