〖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
posted @ 2022-03-13 17:57  DanicaStarrr  阅读(170)  评论(0编辑  收藏  举报