目前的我的这个同步方法是这样的,我查阅的一些资料是解释:
synchronized()作用是:防止多个线程同一时间调用此代码块或者方法.如果我多台服务器上的 tomcat ,在执行到这个方法的时候是什么情况?
synchronized是解决一个Java进程内的多个线程的并发访问问题的,如果是多台tomcat,那肯定是多个独立的Java进程,所以synchronized在多台机器/多个进程之间是不起任何作用的。
Synchronized只能锁定当前tomcat的方法;
因为其实现机制是可用共享的堆内存空间,多个tomcat之间就各用各的堆内存空间,所以在多个tomcat之间用同步是办不到实际的原子性操作的;
解决方法:
1.在数据库层面进行锁定,避免脏数据的产生;
2.将共享的变量或操作放置于一个中央控制服务器中,这样也能办到共享数据的原子性
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。