gpt4 book ai didi

java匿名类和同步以及 "this"

转载 作者:行者123 更新时间:2023-12-04 01:53:26 26 4
gpt4 key购买 nike

我相信,在我的 JAVA GUI 中,我正在处理竞争条件。

我有一些方法可以在匿名类中创建“匿名方法”,如下所示:

synchronized foo()
{
someMethod(new TimerTask()
{
public synchronized run()
{

//stuff

}
};
}

问题:该 run 方法是在 TimerTask 对象还是 foo 所在的类上同步的?

问题 2:如果我在 run() 声明中去掉了“synchronized”,而是在 run() 主体中有一个 synchronized(this) {} 块,那么“this”是指 TimerTask 对象还是指向该对象的对象是包含 foo() 的方法的实例吗?

请帮帮我。

谢谢,
吉布

最佳答案

run方法在 TimerTask 上同步本身。已同步 instance methods are always synchronized on this 目的。 (类方法在 Class 对象上同步。)

如果要在foo 的对象上进行同步是成员(member),您需要qualify the this keyword.假设 foo()Bar的成员(member)类,在 run()TimerTask的方法, 您可以使用

public void run() {
synchronized(Bar.this) {
...
}
}

关于java匿名类和同步以及 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809464/

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