gpt4 book ai didi

java - 在 Java 中使用 synchronized (Thread.currentThread()){...} 的目的是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:21:53 25 4
gpt4 key购买 nike

我在我们的项目中遇到了以下代码:

synchronized (Thread.currentThread()){
//some code
}

我不明白在 currentThread 上使用同步的原因。

有什么区别

synchronized (Thread.currentThread()){
//some code
}

只是

//some code

你能举个例子说明区别吗?

更新

更详细的这段代码如下:

synchronized (Thread.currentThread()) {
Thread.currentThread().wait(timeInterval);
}

看起来只是 Thread.sleep(timeInterval)。是真的吗?

最佳答案

考虑一下

    Thread t = new Thread() {
public void run() { // A
synchronized (Thread.currentThread()) {
System.out.println("A");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
}
};
t.start();
synchronized (t) { // B
System.out.println("B");
Thread.sleep(5000);
}

block A 和 B 不能同时运行,因此在给定的测试中,“A”或“B”输出将延迟 5 秒,哪个先出现是未定义的

关于java - 在 Java 中使用 synchronized (Thread.currentThread()){...} 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22981673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com