gpt4 book ai didi

java - 与具有无限循环的线程(可调用)相结合

转载 作者:行者123 更新时间:2023-12-02 00:14:43 27 4
gpt4 key购买 nike

我定义了一个名为“folderwatcher”的类(可调用),它正在监视特定文件夹的任何更改。主要代码处于无限循环中,类似于: Monitor a Directory for Changes using 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: %s\n", 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);
}

关于java - 与具有无限循环的线程(可调用)相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070117/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com