在线程thread1的读取某个文件夹中的文件进行分析的方法体中加入如下代码:
synchronized(this){
  //处理过程
  this.wait();
}
在线程thread2的将该文件夹中的所有文件压缩存储,并且删除原有的文件的方法体中加入如下代码:
synchrionized(thread1){
  //处理过程
  thread1.notify();
}

解决方案 »

  1.   

    晕,读取文件的线程不止一个不早说,那是不是都是同一个线程类生成的呢?
    如果所有读取文件的线程都是同一个线程类的实例,则可以在这个线程类中设置一个static对象属性,假设为protected static Object lock = new Object();
    将以上代码修改为:
    在线程Thread1的读取某个文件夹中的文件进行分析的方法体中加入如下代码:
    synchronized(lock){
      //处理过程
      lock.wait();
    }
    在线程Thread2的将该文件夹中的所有文件压缩存储,并且删除原有的文件的方法体中加入如下代码:
    synchronized(Thread1.lock){
      //处理过程
      Thread1.lock.notify();
    }
    如果读取文件的线程不是由同一个线程类生成的,那情况复杂一些,但一个总的原则是,想办法让所有的线程对于同一个对象保持同步(synchronized)。