test1是被观察者,
test2是观察者,监听test1中的变化
package test;
import java.util.Date;
import java.util.Observable;
public class test1 extends Observable {
int i = 0;
public static void main(String[] args) {
test1 t1=new test1();
test2 t2=new test2();
t1.addObserver(t2);
t2.exec();
t1.exec();
}
public void exec() {
new Thread() {
public void run() {
try {
while (true) {
System.out.println("test1\t"+(++i));
setChanged();
notifyObservers(i);
System.out.println("test1\t"+new Date());
sleep(2000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
package test;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
public class test2 implements Observer {
int oldi = 0,newi=0;
public void exec(){
new Thread() {
public void run() {
try {
while (true) {
if(newi!=oldi){
System.out.println("test2\t"+newi);
System.out.println("test2\t"+new Date());
oldi=newi;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
@Override
public void update(Observable arg0, Object arg1) {
newi=Integer.valueOf(arg1.toString()).intValue();
}
}
http://blog.youkuaiyun.com/goggler/archive/2009/12/20/5044983.aspx