Java 无法获得番石榴23';要编译的SimpleTimeLimiter示例
我正在遵循我在网上多次看到的代码组合,等等。但它不会为我编译Java 无法获得番石榴23';要编译的SimpleTimeLimiter示例,java,guava,Java,Guava,我正在遵循我在网上多次看到的代码组合,等等。但它不会为我编译 import com.google.common.util.concurrent.SimpleTimeLimiter; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; public class TimeLimit { public static void main(String[] args) {
import com.google.common.util.concurrent.SimpleTimeLimiter;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
public class TimeLimit
{
public static void main(String[] args)
{
SimpleTimeLimiter limiter = new SimpleTimeLimiter();
String result = limiter.callWithTimeout(new Callable<String>()
{
public String call()
{
return longTimeExecutingMethod();
}
}, 3, TimeUnit.SECONDS, false);
}
public static String longTimeExecutingMethod()
{
return "long time executing method";
}
}
以及:
但这只会导致更改第一个编译器错误:
Error:(10, 45) java: SimpleTimeLimiter(java.util.concurrent.ExecutorService) has private access in com.google.common.util.concurrent.SimpleTimeLimiter
使用:
使用:
这解决了第一个问题。第二个编译错误是什么?“实际参数列表和形式参数列表长度不同”您正在传递一个额外的参数(布尔值)。这解决了第一个问题。第二个编译错误是什么?“实际参数列表和形式参数列表长度不同”您正在传递一个额外的参数(布尔值)。
Error:(11, 40) java: method callWithTimeout in class com.google.common.util.concurrent.SimpleTimeLimiter cannot be applied to given types;
required: java.util.concurrent.Callable<T>,long,java.util.concurrent.TimeUnit
found: <anonymous java.util.concurrent.Callable<java.lang.String>>,int,java.util.concurrent.TimeUnit,boolean
reason: cannot infer type-variable(s) T
(actual and formal argument lists differ in length)
SimpleTimeLimiter limiter = new SimpleTimeLimiter(Executors.newSingleThreadExecutor());
Error:(10, 45) java: SimpleTimeLimiter(java.util.concurrent.ExecutorService) has private access in com.google.common.util.concurrent.SimpleTimeLimiter
SimpleTimeLimiter limiter = SimpleTimeLimiter.create(executor);