我遇到了以下问题:
我想为应用程序使用中介模式。
我有一个创造价值的制作人。 我有一个中介,它将值存储在队列中(这是私有的,因此存在getter和setter),并通知消费者队列中有新值。 我得到了消费者,获得了关于新价值的通知,得到了它并用它做了什么......
我希望所有3个类都在自己的线程上运行。 但我也想要有效率。
如果我理解正确的话,当run()结束时我的mediator线程将被GCed ...所以我需要通过循环保持它活着,不是吗?喜欢while(true),但这不是很有效。有没有更好的办法?或者我完全不正确,调解员不会被GC?
提前致谢
答案 0 :(得分:0)
你说得对,一旦你的中介对象的run()
方法返回,线程就会终止。但这并不意味着调解员将被GCed;如果对你的中介对象有实时参考,那就不会。但是,如果线程退出,则调解员不会特别有用。 while(true)
循环是解决此问题的一种方法。 while(true)
循环不一定效率低下。通过在某个对象上调用wait()
可以很容易地工作,直到队列中出现新的东西。线程将处于等待状态,不会消耗cpu资源。