对java synchronized 关键字的理解二
来源:互联网 发布:麻将游戏app开发 源码 编辑:程序博客网 时间:2024/09/21 09:28
近日,有位同事写了一段线程同步代码,却发现实际上没有启作用。上代码
public String getSerialNo(String requestId) throws ServiceException {
String serialNo = "";
try {
synchronized(requestId) {
//------------业务逻辑处理
}
} catch (DaoException e) {
throw new ServiceException("getSerialNo DaoException" , e);
}
return serialNo;
}
看上去,第一感觉这个是调用传的对象问题,就是String 对象不是同一个。这就又牵涉到String对象生成的问题了,上篇文章中其中有提到
http://blog.csdn.net/yysct2005/article/details/8876906
那就顺着这个思路来吧,这个方法的调用方呢?经了解得知,这是一个远程方法调用的实现类的接口调用。这也就牵涉到序列化实现机制了,使用的是Hessian2序列化。
那也就成了对同一个值相等的String对象,序列化生成的String是怎么生成的问题。
总之,说明了,同步加在了不同的对象上面导致的问题。
这么多场景下(在不知外部系统怎么来调用),怎么更好滴使用同步关键字,有好的实践方式:
封闭原则-----此类代码同步仅限于本类实现。对外部透明,并不依赖外部。
对象的锁建议选定new Object 方式。
0 0
- 对java synchronized 关键字的理解二
- 对Java关键字synchronized的一些理解
- 对java synchronized 关键字的理解
- 对synchronized关键字的理解
- java synchronized关键字以及对线程锁的理解
- java synchronized关键字理解
- 关于java中的synchronized关键字的理解
- 关于java中的synchronized关键字的理解
- java中的synchronized关键字的理解
- Java中synchronized关键字的简单理解
- 关于java synchronized关键字的一些理解
- Synchronized 关键字的理解
- synchronized关键字的理解
- synchronized 关键字的理解
- 梳理对Java的synchronized的理解
- 对java中synchronized的一点理解
- 对java 同步synchronized 的理解
- 对java synchronized方法的深入理解
- ios网络编程(http、socket)
- C语言基础4
- 苹果开发/IOS开发资源推荐
- LeetCode | Subsets(子集)
- partial修饰符修饰的类叫部分类
- 对java synchronized 关键字的理解二
- debian下各种垃圾问题
- 形成自己的学习方法
- 2014年新sdk更新,引发的旧eclipse无法使用的问题
- USB驱动相关知识
- 关于同步、异步、阻塞与非阻塞的知识点
- POJ3122 - Sum of Different Primes - 动态规划
- 关于Android 的内存泄露及分析
- Java研究之学习设计模式-多例模式详解