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

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

谢谢

4

1 回答 1

0

您不会丢失任何数据。该队列存在于进程中,并且仅保存由一个线程插入并由第二个线程获取的对象引用。这是一个普通的 Java 集合,但具有同步的(线程感知/线程安全的)变异器。

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

于 2012-12-21T14:24:10.090 回答