Aviator 中的函数都实现了 Java 中的 Runnable
和 Callable
接口,只要这个函数是无参的,就可以直接作为 Runnable
和 Callable
的实现使用,比如传给 Thread
构造函数,作为线程任务执行:
## examples/runnable.av
let r = lambda() ->
p("run in thread");
end;
let t = new Thread(r);
start(t);
join(t);
r
是一个匿名的无参函数,直接用来创建一个执行线程,线程中打印文本:
run in thread
同时也可以作为 Callable
实现,返回一个结果:
## examples/callable.av
let callable = lambda() ->
new java.util.Date()
end;
p(call(callable));
let task = new java.util.concurrent.FutureTask(callable);
run(task);
p(get(task));
直接调用 call
方法,或者包装成 FutureTask
都可以:
Mon Apr 27 12:16:07 CST 2020
Mon Apr 27 12:16:07 CST 2020