在下面的代码中,我按照预期在100秒后捕获TimeoutException.此时我希望代码退出main并终止程序,但它会继续打印到控制台.如何让任务在超时后停止执行?
private static final ExecutorService THREAD_POOL = Executors.newCachedThreadPool();
private static <T> T timedCall(Callable<T> c, long timeout, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
FutureTask<T> task = new FutureTask<T>(c);
THREAD_POOL.execute(task);
return task.get(timeout, timeUnit);
}
public static void main(String[] args) {
try {
int returnCode = timedCall(new Callable<Integer>() {
public Integer call() throws Exception {
for (int i=0; i < 1000000; i++) {
System.out.println(new java.util.Date());
Thread.sleep(1000);
}
return 0;
}
}, 100, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
Run Code Online (Sandbox Code Playgroud) 为了澄清事件驱动我的意思,我指的是我所处的情况
def onTrade(...)
Run Code Online (Sandbox Code Playgroud)
每次特定股票交易时都会调用.假设我想跟踪每日最高交易价格.对我来说,明显的解决方案是:
var dailyHigh = 0
def onTrade(...) {
if (price > dailyHigh) dailyHigh = price
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用val代替var来实现这个功能?还假设我可能希望将来添加dailyLow,volumeHigh,volumeLow等.
该文件在这里
http://dl.dropbox.com/u/12337149/history.csv
我尝试按如下方式读取数据
for (line <- Source.fromFile(new File(file)).getLines) {
println(line)
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:319)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at scala.io.BufferedSource$BufferedLineIterator.<init>(BufferedSource.scala:32)
at scala.io.BufferedSource.getLines(BufferedSource.scala:43)
at com.alluvia.reports.RunIGConverter$$anonfun$main$1.apply(RunIGConverter.scala:17)
at com.alluvia.reports.RunIGConverter$$anonfun$main$1.apply(RunIGConverter.scala:15)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38)
at com.alluvia.reports.RunIGConverter$.main(RunIGConverter.scala:15)
at com.alluvia.reports.RunIGConverter.main(RunIGConverter.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Run Code Online (Sandbox Code Playgroud)
该文件在excel中打开就好了.我认为这是某种类型的编码问题,但我不知道解决方法
例如
object TimeHelpers {
def seconds(in: Long): Long = in * 1000L
}
import TimeHelpers._
class Base {
seconds(1000L)
}
// separate file
class Base2 extends Base {
// does not compile
//seconds(1000L)
}
Run Code Online (Sandbox Code Playgroud)
我是否必须手动导入Base2或有自动执行此操作的方法吗?
java.util.GregorianCalendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
适用于Java
java.util.Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
在Scala中工作
java.util.GregorianCalendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
Scala失败.getInstance不是对象java.util.GregorianCalendar的成员
它们都使用相同的语法来插入变量.例如,如果我想要以下内容
<%= username %>
Run Code Online (Sandbox Code Playgroud)
在我的下划线中,我的主要EJS中断,因为它试图替换用户名,并且主页中不存在这样的变量.
目前我将所有内容连接成一个字符串,如下所示
var body = '';
res.on('data', function(chunk){
body += chunk;
});
Run Code Online (Sandbox Code Playgroud)
如何保存和累积原始流,以便将原始字节传递给期望字节而不是字符串的函数?
我的java类如下
public class Test {
protected enum TestEnum {A, B, C};
public Test(TestEnum te) {
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Scala
class ScalaEnum(myEnum: TestEnum) extends Test(myEnum) {
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
对象中的类TestEnum无法在对象Test中访问Test不允许访问受保护类TestEnum,因为封装类XXX中的类ScalaEnum不是对象的子类在YYY包中定义了target
在Java中,我会做类似的事情
class MyDate extends java.util.Date {
public String toString() { ... }
}
MyDate date = new MyDate
Run Code Online (Sandbox Code Playgroud)
有点笨重.在Scala中,是否可以覆盖toString,同时仍然使用常规的java.util.Date而不是MyDate.我有一个暗示涉及但很乐意使用任何技术
例如
(map #(+ 10 %1) [ 1 3 5 7 ])
Run Code Online (Sandbox Code Playgroud)
将为所有内容添加10
假设我想将所有内容映射到常量1.我试过了
(map #(1) [ 1 3 5 7 ])
Run Code Online (Sandbox Code Playgroud)
但我不明白编译错误.
scala ×6
java ×2
node.js ×2
clojure ×1
csv ×1
ejs ×1
enums ×1
event-driven ×1
filereader ×1
futuretask ×1
javascript ×1
stream ×1