2

我整天都在网上拖钓。没有真正的答案。我希望有人能给我一些建议。

我正在尝试构建的是一个汽车买家类型的应用程序,它需要轮询拍卖并检查我想要购买的物品是否可用。

所以从概念上讲,我认为我应该能够启动一个一直运行的线程(直到我告诉它停止)

当它找到一个项目时,它应该启动另一个线程来投标或购买该项目。

我已经完成了所有代码,它只是我坚持的线程。

第一个问题是我已经能够使用线程 /runnable 以及使用执行服务来启动线程

但在所有情况下,我都不知道如何让线程继续处理......然后允许我发出某种命令,当我想停止程序时停止线程......

一些指导将不胜感激

4

1 回答 1

1

据我了解,您的下一个想法是:

  1. 有线程不时轮询一些服务以找到便宜货
  2. 如果找到,那么应该为这个具体的项目生成另一个线程,以进行投标、购买和惹恼其他没有这么好的工具的买家。
  3. 如果您不想再购买商品,请停止特定线程。

所有这些都可以通过您自己的线程框架使用 JVM 线程原语来实现(这样做会很有趣!)。但是,我建议为此使用Spring Framework任务执行和调度 详细解释了如何做到这一点。在本质上:

  • 想要定期执行一些方法吗?穿上@Scheduled它!(地址#1)
  • 想要以异步方式执行某些方法吗?放@Async!(地址#1)
  • 关于#3 - 取消/停止线程本身就是问题。看看这个问题/答案。到目前为止,我发现的最好(也是推荐的)方法是使用内存中的共享变量或数据库中的某个值(如果应用程序在分布式环境中运行)作为要求后台线程停止的标志。

尽管听起来很简单,但您仍然需要了解引擎盖下发生的事情并了解一些关于 spring 的知识。此外@Sheculed/@Async任务在两个不同的线程池中执行,您可能想要更新它们的默认大小值 - 我只有在生产部署后才学到的教训 :-)

于 2012-12-22T11:44:20.987 回答