1

您将如何实现一个侦听器,该侦听器将在多线程环境中线程执行结束时执行的事件排队?期望的行为是每个线程都有自己的事件队列,这样它们就不会混淆并被原子执行。所以如果线程 A 调用 listener.execute() 那么只有“他的”事件被执行。

我能想到的唯一方法是使用 ThreadLocal 变量,但如果我考虑到这里的复杂性,我宁愿不使用任何变量。

假设您有一棵树,并且您想删除 x 个节点,那么您不想在每个“刷新”事件之后执行刷新 x 次,但您最好将它们排入队列并在最后执行……这样可以节省 x -1 刷新:-)

4

2 回答 2

1

如果您真的想避免使用 ThreadLocal,您可以反转模式并将所有者线程的弱引用与(唯一)队列中的每个事件一起存储。

如果所有者不再可用,这也将允许重新部署到任何其他线程。

但我有点不确定,因为我从未见过需要在“线程执行结束”时执行这样一个事件队列。你真的有线程还是它们真的是任务或可运行的?

于 2012-07-03T20:15:52.513 回答
0

如果每个线程在执行结束时都有自己的 OWN 队列,那么您的所有队列不都是 1-MEMBER 队列吗?

于 2012-07-03T20:19:18.917 回答