Java 多线程中 用字符串常量作为竞争锁 会有什么影响
本文介绍了Java 多线程中 用字符串常量作为竞争锁 会有什么影响的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
视频中说尽量不要用字符串常量作为竞争锁,但不明白为什么
解决方案
应该是为了避免下面这种情况
public class Test {
static final String lock = "this is a lock";
static final String lock1 = "this is a lock";
public static void main(String[] args) throws InterruptedException {
new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
System.out.println("locked ...");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
System.out.println("unlocked ...");
}
}
}).start();
Thread.sleep(1000);
new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock1) {
System.out.println("locked lock1 ...");
System.out.println("unlocked lock1 ...");
}
}
}).start();
}
}
这篇关于Java 多线程中 用字符串常量作为竞争锁 会有什么影响的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文