因为只有在相同字符串的情况下,并发操作才是不被允许的。因为String 类型的变量赋值是这样的: String a = "hello world."; 所有往往会有个错误的映象,String对象就是不可变的。但是,前面说了, "a" 是可能不等于 "a" 的。所以,我们可以稍微优化下:看起来还是很方便简单的,其原理就是把String对象放到常量池中。不管怎么样,我们是不是可以自己去基于String实现一个锁呢?使用时,只需传入 lockKey 即可。我们知道 CAS 的效率是比较高的,我们可以使用原子类来进行CAS的操作。比如,我们添加一状态字段, 操作此字段以保证线程安全:实际测试下来,CAS 性能是要比 synchronized 之类的锁性能要好的。

基于String实现同步锁的方法步骤

基于String实现同步锁的方法步骤

基于String实现同步锁的方法步骤

基于String实现同步锁的方法步骤

基于String实现同步锁的方法步骤

基于String实现同步锁的方法步骤