public class GlobFlag {
private Integer timerFlag = 1;
//Integer的话timeFlag就变成了对象,在外部就可以Synchronized了
private GlobFlag(){} //私有化构造函数,防止在外部实例化
private static GlobFlag instance = new GlobFlag(); //私有静态对象instance
//私有:防止外部改动此对象
//静态:下面的静态方法getInstance()只能操作静态对象,所以instance定义成static
//静态方法返回instance对象:外部无法实例化,所以无法调用,因此变成static可以直接用类名调用
public static GlobFlag getInstance(){
return instance;
}
public Integer getTimerFlag() { //返回timeFlag对象
return timerFlag;
}
public void setTimerFlag(Integer timerFlag) { //修改timeFlag对象
this.timerFlag = timerFlag;
}
}
此时在别处是这样调用这个全局变量的:
<pre name="code" class="java">public class Timer implements Runnable{
private int timeUnit;
Timer(){
this.timeUnit = 0;
}
public int getTimeUnit(){
return this.timeUnit;
}
public void run(){
synchronized (GlobFlag.getInstance().getTimerFlag()) {
while(GlobFlag.getInstance().getTimerFlag() == 1){
this.timeUnit += 2 ;
GlobFlag.getInstance().setTimerFlag(0);
}
}
}
}