Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免比赛状态_Java_Jsp - Fatal编程技术网

Java 如何避免比赛状态

Java 如何避免比赛状态,java,jsp,Java,Jsp,在jsp中避免竞争条件同时又不减慢进程的最佳方法是什么 isThreadSafe=false 已同步(会话) 但是,是否有其他替代解决方案可用?这取决于您为什么有比赛条件 最简单的想法是没有您写入的全局变量 在只使用局部变量的方法中执行所有逻辑 jsp页面中没有任何java代码,但是调用bean来执行操作 您在做什么导致竞争条件?一刀切的解决方案(例如threadSafe=false)导致请求一次执行一个。这不可避免地会减慢请求处理的速度 为了避免这种情况,您需要理解为什么会遇到竞争条件,并(重

在jsp中避免竞争条件同时又不减慢进程的最佳方法是什么 isThreadSafe=false 已同步(会话)


但是,是否有其他替代解决方案可用?

这取决于您为什么有比赛条件

最简单的想法是没有您写入的全局变量

在只使用局部变量的方法中执行所有逻辑

jsp页面中没有任何java代码,但是调用bean来执行操作


您在做什么导致竞争条件?

一刀切的解决方案(例如
threadSafe=false
)导致请求一次执行一个。这不可避免地会减慢请求处理的速度

为了避免这种情况,您需要理解为什么会遇到竞争条件,并(重新)设计您的体系结构以避免问题。例如:

  • 如果竞争条件是对某些共享内存数据结构的更新,则需要以适当的粒度级别同步对数据结构的访问和更新

  • 如果竞争条件在数据库的更新中,则需要重新构造SQL以在适当的粒度级别上使用事务

这些只是(可能的)模式,用于解决您的竞争条件问题。事实上,你必须自己理解根本原因

isThreadSafe=false
这可能会导致性能低下,因为它会使页面访问按顺序进行。它也只会影响一个页面,因此,如果您通过另一个页面访问数据,这对您没有任何帮助

synchronized(session)
这并不能保证有效(尽管它会在某些服务器上作为实现的副作用)

任何解决方案都可能需要有关您试图保护的数据和服务器配置的更多信息。

相关问题: