2

文档中,似乎在 repl 处评估的以下内容应该阻止?

(take 1 (seque (java.util.concurrent.LinkedBlockingQueue.)))

当然我错过了一些明显的东西?

4

2 回答 2

2

不传递要使用的序列是错误seque的(您可以覆盖要使用的队列,但仍然必须传递序列)。它可以做它想做的任何事情,因为你已经传递了无意义的参数。它碰巧返回一个空序列,这不是 IMO 最好的做法:最好报告一个错误,但由于做出了任何实施决策,这就是发生的事情。

编辑:评论者指出LinkedBlockingQueue一个序列,因为它是一个可序列化的 juCollection。所以这不是完全错误的输入,而是从seque. LBQ 在被要求对其内容进行顺序视图时,会查看它是否有任何项目;它没有,所以它返回一个空序列。

于 2013-06-05T19:28:16.300 回答
0

查看 的源代码seque我理解它的作用是创建一个新的并开始使用代理使用LinkedBlockingQueue序列。使用代理以便异步完成从创建元素到创建s元素的“复制” 。sLinkedBlockingQueue

文档表明,如果从原始序列到中间序列的异步复制BlockingQueue比您使用延迟序列返回的速度慢seque,它将阻塞。

这一点都不明显,我的解释与您阅读seque. 我必须查看源头才能弄清楚发生了什么。

于 2013-06-05T19:30:22.760 回答