使用具有无限循环的线程(可调用)进行Cummitting



我定义了一个名为"folderwatcher"的类(可调用),用于监视特定文件夹的任何更改。主代码处于一个无限循环中,类似于:使用Java监视目录中的更改。我希望调用这个"folderwatcher"的方法/类侦听"folderwatcher"发现的任何事件,并根据该事件执行一些操作。有人知道我该怎么做吗?我需要事件处理程序吗?有什么例子吗?感谢

首先,使用无限循环方法是错误的。如果你真的在使用Callable,那么你已经在使用一个ExecutorService了。您应该使用ScheduledExecutorService,并将代码安排为重复任务。

就事件处理程序而言,这并不难实现,例如:

interface FileDetectedHandler { void fileDetected(File f); }
public static void main(String[] args) {
  final ScheduledExecutorService scheduler = 
     Executors.newSingleThreadScheduledExecutor();
  final FileDetectedHandler h = new FileDetectedHandler(File f) {
    public void fileDetected(File f) {
      System.out.format("File detected: %sn", f);
  }};
  final Runnable r = new Runnable() { public void run() {
    File f = null;
    //detect file
    if (f != null) h.fileDetected(f);
  }};
  scheduler.scheduleWithFixedDelay(r, 0, 2, TimeUnit.SECONDS);
}

使用回调。这可以通过在父对象上实现同步方法来实现,然后将对父对象的引用传递到可运行对象的构造函数中。然后,可运行程序可以调用父对象上的方法来通知它一些事情。

http://en.wikipedia.org/wiki/Callback_(计算机编程)

相关内容

  • 没有找到相关文章

最新更新