【发布时间】:2015-07-09 08:12:17
【问题描述】:
对于经典的 Servlet -> Service -> DAO 模式的同步,我有一个非常根本的疑问。
假设我有一个可供多个并发用户访问的订票应用程序。没有两个用户最终会预订同一张票。当两个不同的用户尝试访问机票预订时,我认为会发生以下情况 -
- Web 容器为这两个创建请求/响应对象 要求。将请求 url 映射到一个 servlet(比如 BookingServlet)。
- 为每个请求创建线程以运行服务方法 BookingServlet。
- 服务 -> doPost 方法创建一个 BookingService 对象并传递座位信息。
- BookingService 对象执行一些业务逻辑并实例化 BookingDAO 对象连接数据库并进行更新。
现在,为了避免两个用户预订同一张票,必须在哪里进行同步?
是在 BookingService 还是在 BookingDAO?
但是,这是我的疑问,对于每个请求,我们实际上是在创建一个单独的 BookingService 和 BookingDAO 对象 - 这不会破坏将同步放在其中的目的吗?
【问题讨论】:
标签: java multithreading concurrency dao synchronized