同样要先看一段代码,这是一段方法内部的代码:
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过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
* synchronized 关键字只能被一个线程获取,没有获得锁的线程只能等待。 * 每个实例都对应有自己的锁(this),不同实例之间互不影响。 * synchronized 修饰的方法,无论方法正常执行完毕还是抛出异常,都会释放锁。...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
npm install synchronized - promise -- save 用法 首先,您需要针对JavaScript的“ synchronized-promise包: const sp = require ( 'synchronized-promise' ) 对于TypeScript或ES6之后JavaScript: import sp ...
Synchronized Phasor Measurements and Their Applications
synchronized-4月5日.md
3. **修饰代码块**:通过指定对象来锁定代码块,例如 `synchronized(obj){...}`,这里的`obj`是你要锁定的对象。这种方式更加灵活,可以锁定特定对象的代码段,而不仅仅是整个方法。 在给定的示例中,`synchronized...
3. 对象锁与类锁的区别:如果同步代码块是基于类的静态方法(`static synchronized`),则锁是针对类的,所有实例共享这个锁。而基于实例方法的同步锁是针对实例对象的。 4. 可重入性:一个线程已经拥有某个对象的...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
当一个线程调用 synchronized 方法时,Java 虚拟机(JVM)会检查该方法是否被锁定,如果该方法已经被锁定,其他线程无法访问该方法,直到锁被释放。这种机制可以确保在同一时间只有一个线程可以访问该方法,以避免...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
在Java多线程编程中,`ReentrantLock`和`synchronized`都是用于实现线程同步的重要工具,确保在并发环境中数据的一致性和正确性。两者虽然都能实现互斥访问,但在功能、性能以及使用场景上有所不同。下面我们将深入...
1.偏向锁 2.轻量级锁 3.锁的优缺点对比
线程同步(synchronized)2---马克-to-win java视频的介绍