我有一个实现可调用接口的类。我想为类调度一个任务,使用schduledExecutorService接口的schduleAtFixed速率方法。但是需要一个可运行的对象作为它可以调度的命令。
因此,我需要某种方法来将可调用转换为可运行。我试过简单的铸造,但不起作用。
示例代码:
package org.study.threading.executorDemo;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
class ScheduledExecutionTest implements Callable<String> {
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
System.out.println("inside the call method");
return null;
}
}
public class ScheduledExecution {
public static void main(String[] args) {
ScheduledExecutorService sec = Executors.newScheduledThreadPool(10);
sec.scheduleAtFixedRate(new ScheduledExecutionTest(), 5, 2, TimeUnit.SECONDS);
}
}
JDK有一个util方法来实现这一点:
Runnable runnable = ..
Executors.callable(runnable);
假设您不需要Callable
来返回任何有用的内容,您可以将Callable包装为Runnable
Runnable run = new Runnable() {
public void run() {
try {
Object o = callable.call();
System.out.println("Returned " + o);
} catch (Exception e) {
e.printStackTrace();
}
}
};
或者使用Java8
Runnable run = () -> {
try {
Object o = callable.call();
System.out.println("Returned " + o);
} catch (Exception e) {
e.printStackTrace();
}
};
这是相当混乱的,但听起来Callable一开始就应该是Runnable,您不必这样做。
FutureTask task1 = new FutureTask(Callable<V> callable)
现在这个task1可以运行了,因为:
所以从上述两个关系来看,task1是可运行的,可以在Executor.execute(Runnable)
方法中使用
问题内容: 我正在寻找一种无需使用py2exe将Python程序转换为.exe文件的方法。py2exe说它需要Python 2.6,它已经过时了。有没有办法使最终用户不必安装Python就可以分发我的Python程序? 问题答案: 请理解,每个用于Python的“冻结”应用程序都不会以任何方式真正保护您的代码。每个用于独立可执行Python“程序”的打包系统都将包含许多Python库和解释器,这将
我想用可选的。由于只能连接流,我有以下问题: 如何将可选 转换为流 ? 示例:
问题内容: 我目前正在尝试将某些行PIVOT转换为列。问题是我并不总是知道有多少行可用。让我们看一个例子: 结果” 静态枢纽的SQL FIDDLE范例。我正在尝试实现动态枢轴-http://sqlfiddle.com/#!3/ 2be82/1 因此,这是我的难题:在这种情况下,我希望能够基于GroupID透视未知数量的列。 我希望能够将GroupID 3中的所有行都列为PIVOT。我需要在不知道g
问题内容: 如何将使用lwuit库的J2ME应用程序转换为android apk? 我尝试使用mircoemulator进行转换,但是当我启动应用程序时,它显示错误并退出。 问题答案: 阅读本文LWUIT for Android。这里清楚地讲述了如何使用Android进行LWUIT。仔细遵循stpes并更改您的MIDlet代码。只需签出LWUIT- Incubator 存储库,并将其用于LWUIT
问题内容: 我有一组YYYYMMDDHHMMSS格式的日期/时间字符串,我想将其转换为实用程序可读的格式。通常,我可以执行以下操作: 但是,不喜欢YYYYMMDDHHMMSS: ..失效日期 因此,我可能需要将字符串优化为以前的格式。我在想这是答案,但是它很快变得很难看。我确定我的字符串将是正确的格式,那么如何轻松转换它们呢? 问题答案: 日期不允许使用“ YYYYMMDDHHMMSS”,但它允许
继承了一个iterator()方法来生成。 但我需要一个而不是。