标题描述得不是特别清楚。一个很菜鸟的问题,实际情况是这样,项目是一个STRUTS2的WEB应用程序,ACTION里有个方法,先从一张表里读取一个CODE,再把这个CODE作为主键插入另外一张表,也就是说,两个DB操作。
问题是这样,如果两台机器的两个用户同时调用这个方法,有可能会出现这种情况:两个人取得的CODE都是一样的,然后两个人用相同的CODE插DB,DB就报错了。
我的疑问是,读CODE和插DB是在一个方法里的两个DB操作,执行速度应该是很快的,为什么会出现上述这种情况呢?这种情况跟线程,进程什么的有关系吗?
[b]问题补充:[/b]
标题描述得不是特别清楚。一个很菜鸟的问题,实际情况是这样,项目是一个STRUTS2的WEB应用程序,ACTION里有个方法,先从一张表里读取一个CODE,再把这个CODE作为主键插入另外一张表,也就是说,两个DB操作。
问题是这样,如果两台机器的两个用户同时调用这个方法,有可能会出现这种情况:两个人取得的CODE都是一样的,然后两个人用相同的CODE插DB,DB就报错了。
我的疑问是,读CODE和插DB是在一个方法里的两个DB操作,执行速度应该是很快的,为什么会出现上述这种情况呢?这种情况跟线程,进程什么的有关系吗?
看了bohemia的回答,里面有syncronized关键字,JAVA里syncronized是用于同步线程的,这里用syncronized是不是意味着STRUTS2的请求都是基于线程的?
或者是说,关于STRUTS2的请求是线程还是进程呢?
不知道有没有问到点上呢。
[b]问题补充:[/b]
非常高兴的感谢bohemia的回答,解决了我心中的疑惑。还想再问一下,
1.你说的线程控制是不是就是指用syncronized ?
2.如果是并列服务器,syncronized就不起作用了?