多个用户访问同一系统的并发性(系统同时处理请求)

时间:2013-01-11 02:07:00

标签: multithreading servlets concurrency web theory

我有一个令人困惑的问题,我一直在考虑。在我的应用程序的好日子场景中,我想写一个algorithm,在parallel中为我编译我的数据,并利用加速。但在我完成所有这些努力之前,我想知道在这种情况下是否可能,或者只是一个白日梦。

speed up  (wikipedia,2011)

让我们说这个问题的目的是我有5个用户(User A, User B, User C, User D and User E。这些人使用用户名/密码登录而不是线程的隐喻)在SYSTEM内登录由Cookies处理的会话。

假设User A发送请求服务器计算长度为1000×1000的梯形(并且系统将该请求分为4个部分并将每个部分发送到核心)。现在让我们也说为了这个问题的目的,User B也与User A同时登录,并且他还发送一个请求系统来计算不同长度的梯形(和系统)然后把它分成服务器的核心。)

从我的简短理解中我知道这个场景对于单个用户来说是显而易见的,但是有多个用户可以同时访问系统(并且让系统同时处理请求)?可以很好地编写一个java程序来处理这个吗?或者bottle neckUser A之间是否会发生User B或其他事情(因为他们从系统竞争资源)?是User并发处理使用linear algorithms在不同实例化对象中最佳处理的大量数据,还是可以使用基于Web的产品parallel algorithms完成?

1 个答案:

答案 0 :(得分:0)

当多个线程同时访问共享数据时,会出现竞争条件。当多个线程以冲突的顺序锁定资源时,就会发生死锁。

这些在多线程环境中总是可行的,但是数千个系统具有类似的功能。点击下面的“发布你的答案”按钮后,SO将使用多个用户的答案更新问题。你没有因为竞争条件而看到任何垃圾吗?

您可以通过对算法进行伪编码并查看可以实现并发的位置来获益 - 一种方法是使用专用于线程的数据,例如:本地和线程局部变量。另一个是识别(小)使用共享数据和使用锁定结构的代码段,以确保它们不会并行执行,允许其余代码并行执行。