Aviator 中的函数都实现了 Java 中的 Runnable 和 Callable 接口,只要这个函数是无参的,就可以直接作为 Runnable 和 Callable 的实现使用,比如传给 Thread 构造函数,作为线程任务执行:
## examples/runnable.avlet r = lambda() ->p("run in thread");end;let t = new Thread(r);start(t);join(t);
r 是一个匿名的无参函数,直接用来创建一个执行线程,线程中打印文本:
run in thread
同时也可以作为 Callable 实现,返回一个结果:
## examples/callable.avlet 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 2020Mon Apr 27 12:16:07 CST 2020
