我刚刚在程序中导入并开始使用ScheduledExecutorService,但从其文档中获得了示例用法示例的编译错误:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
我正在Android Studio(版本3.2.4)中进行开发。我还尝试强制我的项目使用Java版本1.8,但这并没有执行任何操作。 (该项目通常使用Java 1.7)
错误如下:
错误:无法将ThreadPoolExecutor类中执行的方法应用于给定类型;
必填:可运行
找到:没有参数
原因:实际和形式参数列表的长度不同
我不使用ThreadPoolExecutor,据我所知,上面的示例使用正确数量的参数正确调用了ScheduledExecutorService的所有方法。
更新 我已经在自己的文件中单独测试了代码示例,并尝试在终端中对其进行编译,并且编译起来还不错。因此,这意味着我的周围代码或环境有问题。我将对其进行更多研究,并在找到它时用更多详细信息更新这个问题。
答案 0 :(得分:0)
看来这个愚蠢的错误只是由于我自己的错误。在创建新类和构建新体系结构的同时,我一定没有构建我的应用程序一段时间。
基于这个原因,我确实有一个实现ThreadPoolExecutor的类,但是我已经放弃了该类供其他库使用,并完全忘记了!
故事的故事
跟踪您的想法,如果您不使用它们,则将其正确注释掉。然后,一旦完成开发该功能,请记住将其删除!