同样要先看一段代码,这是一段方法内部的代码:
StringBuffer temp = new StringBuffer(64);
synchronized (temp) {
String cgbh = Decoder.getParameter(request, "cgbh");
temp.append("INSERT INTO LWZZWCRXX (ID, XMBH, ZGH, XM) (SELECT ");
temp.append(" IDC_U_KYMIS.KY_XMRYXX_SEQ.NEXTVAL, CGBH, '");
temp.append(UserToken.getUserid(request)).append("','");
temp.append(UserToken.getUser(request).getUserName() + "'");
temp.append(" FROM ( ");
temp.append("SELECT NVL(TO_CHAR(MAX(TO_NUMBER(CGBH))), '").append(cgbh).append("' || '0000') CGBH");
temp.append(" FROM LWZZ WHERE CGBH LIKE '").append(cgbh).append("%'))");
return temp.toString();
}
先不说代码中变量的命名是否显得苍白,主要的问题就是这个synchronized 使用,
temp 是一个局部变量,一个方法内的局部变量,而java的方法的执行每次调用都会产生不懂的方法内局部变量,那真不知道 synchronized (temp)的用处在什么地方。
补充:
java中方法是线程安全的,对于局部变量来说,根本没有必要用synchronized,如果需要用到synchronized来做特殊处理,那肯定是自己的设计出了问题,要选择修改自己的策略,而不是通过这样的办法。甚至本人觉得局部变量的就是用StringBuilder也不需要做同步,用同步肯定自己策略本身就是危险的。
分享到:
相关推荐
Java并发编程---synchronized关键
Java并发编程系列- synchronized;Java并发编程系列- synchronized;Java并发编程系列- synchronized;
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
Java-synchronized详解.docx
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
Synchronized Phasor Measurements and Their Applications
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
npm install synchronized - promise -- save 用法 首先,您需要针对JavaScript的“ synchronized-promise包: const sp = require ( 'synchronized-promise' ) 对于TypeScript或ES6之后JavaScript: import sp ...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
OC-@synchronized
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
1.偏向锁 2.轻量级锁 3.锁的优缺点对比
Java 多线程与并发(4_26)-关键字_ synchronized详解
线程同步(synchronized)2---马克-to-win java视频的介绍
Synchronized原理-思维导图
线程同步(synchronized)1---马克-to-win java视频 java视频