可以。自己写一个监听类。可以参考jdk原码他里面已经有个Event接口。你可以继承它。。参考设计模式adaptor。synchronized 是一个线程同步加锁的问题。。详细你可参考thinking in java

解决方案 »

  1.   

    都可以实现哦,第一个一般是继承已有的东西,第二个我觉得自己编程控制jvm的synchronized机制好象不可以吧,用它提供的东西就够用了,除非你想自己实现一个JVM个人看法,等待高手指点
      

  2.   

    编写自定义事件的步骤:1,编写自定义事件类,比如NameChangedEvent2,编写自定义事件监听器,比如NameChangedListener,一般它有一个事件响应方法,比如下面这个actionWhenNameChanged:
    public interface NameChangedListener{
    public void actionWhenNameChanged(NameChangedEvent e);
    }3,在事件源维护事件监听器列表,当Name确实改变时,触发NameChangedEvent(实际上就是遍历该列表,顺序执行列表中每个NameChangedListener对象的actionWhenNameChanged方法)。
    下面是一个事件源的例子:public class Company{
    String name;List actionListenerList;public void addNameChangedListener(NameChangedListener l){
        actionListenerList.add(l);
    }public void setName(String name){
     if(name != this.name){
       this.name = name;
    fireNameChangedEvent(new NameChangedEvent(this,name,this.name)) //NameChangedEvent的构造函数你可以根据需要传入不同的参数。
      }
    }protect void firedNameChangedEvent(NameChangedEvent e){
    //在这里遍历actionListenerList,顺序执行里面每个NameChangedListener的actionWhenNameChanged方法,这是事件传播的关键所在,在这里可以利用线程,实现异步事件派发。
    }}关于synchronized的jvm机制,本人也不太清楚,但我想自己编程来控制同步好像没有必要,java sychronized机制存在的固有缺陷很少会给我们带来影响。关于java sychronized的问题,可以参看Singleton 模式中的“double lock”手段。总的讲,java synchronized在大多数时候能很好的保证线程间的同步。