关于如何从这个例子中翻译Runnable块,我有点困惑:
http://www.codejava.net/coding/capture-and-record-sound-into-wav-file-with-java-sound-api
Thread stopper = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(RECORD_TIME);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
recorder.finish();
}
});
Run Code Online (Sandbox Code Playgroud)
我困惑的代码是这样的:
Runnable(){... public void run() {... }}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,clojure函数实现了Runnable.
user=> (ancestors clojure.lang.AFn)
#{clojure.lang.IFn
java.lang.Object
java.lang.Runnable
java.util.concurrent.Callable}
Run Code Online (Sandbox Code Playgroud)
所以你可以直接将fn传递给Thread构造函数.
(def stopper
(Thread.
(fn []
(try
(Thread/sleep RECORD_TIME)
(catch InterruptedException e
(.printStackTrace e))))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
717 次 |
| 最近记录: |