现在Java SE 5已经发布,在明年Java SE 6也将发布。Java SE 6较Java SE5有了很大的改进,它的功能更强,而且是专为Vista所设计,这就意味着Java SE 6将是Vista上的最佳选择。而Java SE 6所提供的最众多的新功能必将成为它的最大卖点。
动态实现接口
脚本引擎还有一个更吸引的功能,那就是动态实现接口。如我们要想让脚本异步地执行,即通过多线程来执行,那InvokeEngine类必须实现Runnable接口才可以通过Thread启动多线程。因此,可以通过getInterface方法来使InvokeEngine动态地实现Runnable接口。这样一般可分为3步进行。
1. 使用javascript编写一个run函数
| engine.eval("function run() {print('异步执行');}"); |
2. 通过getInterface方法实现Runnable接口
| Runnable runner = invokeEngine.getInterface(Runnable.class); |
3. 使用Thread类启动多线程
Thread t = new Thread(runner); t.start(); |
下面是实现这个功能的详细代码。
|
import javax.script.*; import static java.lang.System.*;
public class InterfaceTest { public static void main(String args[]) { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try { engine.eval("function run() {print('异步调用');}"); Invocable invokeEngine = (Invocable)engine; Runnable runner = invokeEngine.getInterface(Runnable.class); Thread t = new Thread(runner); t.start(); t.join(); } catch (InterruptedException e) { err.println(e); } catch (ScriptException e) { System.err.println(e); } } } |
其实上面的代码是通过javascript实现了Runnable接口的run方法。