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