【发布时间】:2014-01-15 21:57:43
【问题描述】:
我刚开始接触并发,所以如果我问一些明显/愚蠢的事情,请耐心等待。我正试图采取第一步来改造我必须利用 Java 货币的模型。在不深入细节的情况下,我有一部分模型加载了一些文件,然后当给定请求时,它会返回文件上的一些相应数据。我的挑战是现在让它在它自己的线程上运行,这样虽然它仍然一次只处理一个请求,但它可以将其他部分代码在它们自己的线程上运行的请求排队。
在尝试通过 jenkov.com 上的优秀教程自学并发性之后,我使用了我学到的东西,基本上创建了一个很像 BlockingQueue 的东西,其中有一个对象充当锁,请求作为排队的线程进入,并且当当前线程完成处理时,它会为下一个线程解锁。因此线程不断被创建、等待、启动,然后最终被销毁,因为每个请求都是一个新线程。
我现在想的是,它更像是我最初想象的那样,只有一个线程等待指令,然后处理这些指令。因此,请求不是作为线程进来的,而是有一些单一的线程等待直到它有一个请求,处理它,处理任何其他排队的请求,如果没有更多的请求,则再次等待。 (假定的)优势是请求作为变量/指导者进来,并且线程不会被不断地创建/销毁。
所以问题是将它重写为更像那样有优势吗?我知道创建/销毁线程可能不会产生大量开销(只要我使用等待/通知功能而不是说忙等待),但这是一种必须运行数百万的模型在这种情况下,有时迭代甚至边际收益会成倍增加。
【问题讨论】:
-
谢谢,我一定会把它添加到我的购物车中。感觉就像我已经进入了一个完整的“另一个层次,所以一本好书肯定会受到赞赏。
标签: java multithreading concurrency