我用线程创建了一个java程序,有时线程使用静态方法,问题是该方法当时只能运行一次。因此,如果方法已经运行,它不应该再开始,而是等待然后重新开始。
答案 0 :(得分:3)
您可以简单地将该静态方法标记为synchronized
,它将确保互斥:2个线程将无法同时运行它,其中一个必须等到另一个完成执行方法:
public static synchronized void method() {
//this part can only be executed by one thread at a time
}
这种表示法相当于使用你班级的监视器作为操作的锁,即:
class YourClass {
public static void method() {
synchronized(YourClass.class) {
//this part can only be executed by one thread at a time
}
}
}
答案 1 :(得分:0)
“word”synchronized
会帮助你
public static synchronized void method() {
....code here
notify();}