我有一些关于死锁概念的一般性问题。 我正在努力学习如何学习构建多线程应用程序的基础知识的基础知识,我只需要一些关键词,并且基本上指向正确的方向,因为我在理解一些基本概念时遇到了问题。
我想学习如何在java中编程队列,以便在处理之前保存元素。例如,如果我的应用程序有很多通知,我希望它们将它们放入队列并异步处理它们,这样它们就不会同时访问数据库并避免DEADLOCKS。
因此,我开始用Java学习java.util.concurrent包,但在此之前我只是有一些基本问题。
java.util.Queue接口是解决此问题的正确方法吗?
我对一个我不理解的行为有另一个基本问题。假设我们有一个基本应用程序,其中多个用户可以登录并编辑他们的个人资料信息(名字,出生日期......)。如果两个用户同时登录并编辑其信息,则两个信息都需要在同一个用户表中保留。这会导致死锁,因为两者都访问同一个表吗? Spring如何处理这个问题?
编辑:
如上所述,我有一个处理多个任务的应用程序,有时会产生死锁。我希望他们放入队列,然后异步处理每个任务。
我做了一些研究,我认为最好的解决方案是将Producer-consumer模式与ExecutorService一起使用,如本文所述的BlockingQueue:https://allegro.tech/2015/05/thread-pools.html
你怎么看?如果这个解决方案对我的问题描述足够好,我只想要一些想法?有更好的方法吗?