2014-07-24 144 views
3

我读了很多需要在编码同步时注意的博客和文章。他们要求使用concurrentHashMap,synchronizedList等。java web应用程序中的并发

根据我的理解,在java web应用程序,应用程序服务器(例如jboss,weblogic,tomcat)中,每个请求都在单独的线程下运行。

例如我有一系列的方法执行方法1 - >方法2 - >方法3,然后每个请求都有自己的执行堆栈。那么为什么我们需要更多地考虑同步?

要么我对并发请求的理解不正确,要么我错过了有关同步方案的内容。

请指教。

回答

4

因为在大多数应用程序中,处理请求涉及访问某些共享数据,这些共享数据也可能被其他线程同时处理其他请求访问。

HTTP会话是一个很好的例子:同一会话中的所有请求共享同一个对象,因此如果浏览器同时发送两个请求,处理这些请求的两个线程可能会尝试访问同一个对象的HttpSession对象同一时间。您需要同步以避免损坏会话。

+0

以更简单的方式 - 它可能是一个文件,很少有线程正在从它读取数据,而很少线程正在将数据写入文件。 –

+0

共享数据通常保存在关系数据库中,“同步”意味着仔细使用数据库事务以避免数据处于不一致状态。 (但这实际上只是@ AnkitSharma关于数据存储在文件中的一个特例。) – Wyzard

+0

是的,我完全同意你的看法。我刚才在这里提到这一点,导致新的Bie很快观察事物。 –