【发布时间】:2016-08-12 21:56:27
【问题描述】:
我正在使用 Spring 构建一个带有 rest api 的应用程序。我需要rest api方法将任务(只是对象)添加到队列和后台工作线程中,当队列为空时将等待,或者在队列不为空时一个接一个地执行任务。一项一项执行任务是绝对必要的,它们可能需要 1 秒到几分钟。不需要通过rest api等待和发送结果,只有任务已经启动的信息。
基本上我的想法是这样的(不是我将如何编码,我知道使用并发包和执行器可以做得更好......):
public class Worker implements Runnable {
private Queue<...> queue;
public addTask(... task) {
this.queue.add(task);
this.notify();
}
@Override
public void run(){
check task queue
- wait() if empty
- execute task if not empty
}
}
我没有尝试过与 spring 结合使用。
我有一些java知识,已经做了一些使用并发的桌面应用程序,但是没有spring经验,所以我只需要指出正确的方向。
这可以使用异步方法(@Async)来完成吗?或者创建将定期检查队列的同步线程(组件)是否可以接受?
感谢您的想法。
【问题讨论】:
标签: java spring multithreading rest