〖java实例〗利用线程检测变量
`
public class Main {
static int i = 0;
static int iAdd = i+1;
public static void main(String[] args) throws Exception {
// 用线程检测
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
// 临时保存值
int save = i;
while(true) {
if( i != save) {
//获取新值
save = i;
// 处理
iAdd = i+1;
System.out.format("i 被改了 : i=%d , next=%d。",i,iAdd);
} else {}
try {
//休息😊
Thread.sleep(1000);
} catch (InterruptedException e) {e.printStackTrace();}
}
}
});
thread.start();
System.out.println("原始:" + i);
while(true) {
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
//改变值
i = input;
}
}
}
`
这个是比较笨的方法
利用线程每一秒就检查变量是否改变。
非常不建议在实际开发中使用(应使用其他成熟的框架)
推荐使用java.bean.PropertyChangeSupport
构造方法:PropertyChangeSupport changes = new PropertyChangeSupport(aclass);
使用匿名内部类来实现监听器,在propertyChange方法中实现你要的处理。该方法会在firePropertyChange触发了事件之后捕获该事件然后执行。也可以通过implements PropertyChangeListener接口实现。
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,它会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。
参考
- 参考时间:2014-05-15 16:21:04
本文来自博客园,作者:DanicaStarrr,转载请注明原文链接:https://www.cnblogs.com/hazjblog/p/checkerforvar.html