gpt4 book ai didi

java - 多线程 - 同步对象的所有实例的 block

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

我有一个计算类。我创建了两个线程,它们都在此类的不同实例上工作,并尝试获取 i 的值。但两者都给了我相同的值(value)观。

我希望如果一个实例的一个线程正在工作,那么在其他实例上工作的线程应该等待。

public class Calculate {
private int i=2;
public void showNumber(){
synchronized(Calculate.class){
i=i+2;
}
System.out.println(Thread.currentThread()+"Value of i is "+i);
}
}

class Test1 implements Runnable{
Calculate c=null;
public Test1(Calculate c){
this.c=c;
}
@Override
public void run() {
System.out.println(Thread.currentThread()+" Running");
c.showNumber();
}

}
public class ThreadingPractise {
public static void main(String[] args) {
Calculate c=new Calculate();
Calculate c1=new Calculate();
Thread t1=new Thread(new Test1(c),"t1");
Thread t2=new Thread(new Test1(c1),"t2");
t1.start();
t2.start();
}
}

最佳答案

使 i 为静态。如果你想在线程之间共享变量。并同步 showNumber 方法而不是Calculate.class,以便一次只有 1 个线程运行它。

关于java - 多线程 - 同步对象的所有实例的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745989/

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