gpt4 book ai didi

java - 如何阻止两个线程对象访问来自同一类的 1 个方法

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

public class B extends Thread {

@Override
public void run() {
print();
}

public synchronized void print(){
int i;
for (i=0;i<1000;i++){
System.out.println(Thread.currentThread().getName() );
}
}

}

public class A {
public static void main(String[] args) {
B b1=new B();
B b2=new B();

b1.start();
b2.start();
}
}

如何锁定访问类 B 的两个对象的 print 方法?我想要的是我在这里同步了该方法,但没有用它!所以我希望线程 1 首先运行 print 方法,然后运行线程 2 。如何更改代码?

最佳答案

您可以使用thread.join(),如下面带有内联注释的代码所示:

B 类代码:

public class B extends Thread {

@Override
public void run() {
print();
}

//Remove synchronized
public void print(){
int i;
for (i=0;i<1000;i++){
System.out.println(Thread.currentThread().getName());
}
}
}

A 类代码:

public class A {

public static void main(String[] args) throws Exception {
B b1=new B();
B b2=new B();

b1.start();//start first thread

b1.join();//Use join, to let first thread complete its run()

b2.start();//run second thread
}
}

此外,作为旁注,我建议您使用 B 类实现 Runnable,而不是扩展 Thread

关于java - 如何阻止两个线程对象访问来自同一类的 1 个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828916/

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