java spring可运行任务超时

e1xvtsh3  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(369)

当数据库不可用时,队列会因为任务停止运行而增长。为run()方法中执行的任务设置超时的最佳方法是什么?可能有一些好的方法来使用executorservice吗?

  1. @Service
  2. public class AsyncWriter implements Writer, Runnable {
  3. private LinkedBlockingQueue<Entry> queue = new LinkedBlockingQueue<>();
  4. private volatile boolean terminate = false;
  5. private AtomicInteger completedCounter = new AtomicInteger();
  6. @PostConstruct
  7. private void runAsyncWriter() {
  8. Thread async = new Thread(this);
  9. async.setName("Writer Thread");
  10. async.setPriority(2);
  11. async.start();
  12. }
  13. @Override
  14. public void run() {
  15. while (!terminate) {
  16. try {
  17. Entry entry = queue.take();
  18. dao.save(entry);
  19. completedCounter.incrementAndGet();
  20. }
  21. } catch (InterruptedException e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. }
  26. @Override
  27. public void write(Entry entry) {
  28. queue.add(entry);
  29. }
  30. }
hkmswyz6

hkmswyz61#

也许你可以试试rxjavahttps://www.baeldung.com/rx-java 您可以在rxjava中设置aync函数超时

相关问题