gpt4 book ai didi

java - 多线程中如何获取锁以及在哪个对象上获取锁?

转载 作者:行者123 更新时间:2023-12-02 08:33:16 24 4
gpt4 key购买 nike

Class ThreadTest extends Thread {
public synchronized void run() {

}

public static void main(String args[])
{
Thread t1=new ThreadTest();
Thread t2=new ThreadTest();
t1.start();
t2.start();
}
}

我想知道在上面的场景中,锁是如何获得的以及在哪个对象上?上述场景有效吗?由于在方法同步中在调用对象上获得了锁,因此在上述场景中将获得对象锁。还有一个问题谁(或哪个对象)调用 run 方法?

谢谢,-阿布舍克

最佳答案

t1 拥有 t1 实例的锁。
t2拥有t2实例的锁。

但是你的例子没有多大意义..

也许这个例子会对您有所帮助:

public class Test extends Thread  {

private String name;

public Test(String name) {
this.name = name;
}

public synchronized void run() {
System.out.println(name);

while(true)
{
// loop endless
}
}

public static void main(String args[])
{
Thread t1= new Test("t1");
Thread t2= new Test("t2");
t1.start();
t2.start();

}

}

输出为:

t1
t2

关于java - 多线程中如何获取锁以及在哪个对象上获取锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705695/

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