通过 javax.script 的接口 ScriptEngineFactory
getParameter
Object getParameter(String key)返回属性值,该属性的含义可能是特定于实现的。其值在所有实现中定义的键有:
ScriptEngine.ENGINE
ScriptEngine.ENGINE_VERSION
ScriptEngine.NAME
ScriptEngine.LANGUAGE
ScriptEngine.LANGUAGE_VERSION
用于这些键的值分别是 getEngineName、getEngineVersion、getName、getLanguageName 和 getLanguageVersion 返回的 String。
还定义了保留键 THREADING,它的值描述了与脚本并发执行和状态维护有关的引擎行为。用于 THREADING 键的值有:
null - 引擎实现不是线程安全的,并且无法用来在多个线程上并发执行脚本。
"MULTITHREADED" - 引擎实现是内部线程安全的,并且脚本可以并发执行,尽管在某个线程上执行脚本的效果对于另一个线程上的脚本是可见的。
"THREAD-ISOLATED" - 该实现满足 "MULTITHREADED" 的要求,并且引擎为不同线程上执行的脚本中的符号维护独立的值。
"STATELESS" - 该实现满足 "THREAD-ISOLATED" 的要求。此外,脚本执行不改变 Bindings 中的映射关系,该 Bindings 是 ScriptEngine 的引擎范围。具体来说,Bindings 及其关联值中的键在执行脚本之前和之后是相同的。
实现可以定义特定于实现的键。
参数:
key - 参数名
返回:
给定参数的值。如果没有为键分配值,则返回 null。
来源JDK文档
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("js");
ScriptEngineFactory sef=engine.getFactory();
System.out.println( sef.getParameter(ScriptEngine.LANGUAGE));
System.out.println( sef.getParameter("THREADING"));
System.out.println(engine.eval("((1+1)*9+9.6)*(8+9-8)"));
运行结果:
ECMA Script
MULTITHREADED
248.4
我的实践 证明 js 的线程 内部安全的!可以设立单例模式,提高代码性能了!
分享到:
相关推荐
你只需要确保在非UI线程中调用执行方法,就可以避免任何潜在的线程安全问题。不过,需要注意的是,如果你的JavaScript代码涉及到UI操作,你需要手动将这些操作委托回UI线程执行,否则可能会引发异常。 Jurassic库还...
"Java Scripting Programe"可能涉及Java的脚本引擎支持,如JavaScriptEngine,它允许在Java应用程序中直接运行JavaScript代码,实现动态编程和脚本语言的集成。 最后,"Thinking in Patterns with Java.pdf"和"Java...
总的来说,Java 5和Java 6的这些新特性显著提升了开发效率,增强了类型安全,简化了多线程编程,加强了Web服务和脚本支持,并提供了更好的工具和API。随着技术的不断演进,这些特性已被广泛应用于各种Java应用程序中...
4. **线程管理**: 浏览器通常需要处理多个并发任务,如加载多个网页,这涉及Java的多线程知识。`java.util.concurrent`包提供了线程池和并发工具类,有助于优化性能和避免阻塞。 5. **安全性**: 由于浏览器涉及到...
8. **并发工具类(Concurrent Utilities)**:在`java.util.concurrent`包中添加了新的线程安全的数据结构和并发编程工具,如Executor框架,使多线程编程更加便捷和高效。 9. **JAXB 2.0**:Java Architecture for ...
java8 集合源码分析 spider-tangpoem项目 优雅的使用WebMagic框架,爬取唐诗别...JUC:Java线程池、线程协作、线程安全类 日志log4j 1.7.25 Java反射 单例模式、工厂模式、代理模式 项目结构 biz包:包括页面爬取逻辑的
这涉及到JavaScript与Java之间的交互,如通过Java ScriptEngine API执行JavaScript代码。 7. **安全性**:Java浏览器需要考虑安全问题,例如防止跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。开发者可能实现了...
12. 多线程:为了保持用户界面的响应性,网络请求和其他耗时操作通常在后台线程中进行。Java的并发API如ExecutorService可以帮助管理这些任务。 通过学习和研究Java浏览器的源代码,开发者可以深入了解网络浏览器的...
另外,java.util.concurrent包中的并发工具类也得到了加强,如CountDownLatch、CyclicBarrier等,为多线程编程提供了便利。 JDK 1.6还引入了Swing的改进,包括新的LookAndFeel,使得Swing组件更加美观,并且提供了...
需要注意的是,虽然在Java中可以调用JavaScript代码,但是由于Java和JavaScript在类型系统、内存管理、作用域等方面存在差异,所以在调用过程中可能会遇到类型转换、作用域限制和线程安全等问题。在使用时,开发者...
1. **Date/Time API**:虽然Java 8的日期时间API更为完善,但Java 6也对日期和时间类进行了改进,比如SimpleDateFormat线程安全的改进。 2. **集合框架**:增强了集合框架,如新增了EnumSet和EnumMap,提供了更高效...
9. **并发工具类的扩展**:Concurrent包增加了许多新的工具类,如ConcurrentHashMap,提供线程安全的哈希映射,以及Phaser和CountDownLatch等同步工具。 10. **JDBC 4.0**:引入了自动连接管理和改进的数据库元数据...
12. **安全管理**: Java的安全模型在JDK 6中继续强化,提供了细粒度的权限控制和安全策略。 这份"JDK6API中文参考[沈东良](070114).chm"文件,是沈东良整理的JDK 6中文版API手册,对于学习和理解Java编程语言,尤其...
- **动态语言支持**:JDK 1.6增加了对脚本语言的支持,通过JSR 223(Scripting for the Java Platform)引入了ScriptEngine接口,使得Java平台可以更好地与其他脚本语言交互。 - **Swing增强**:包括UI组件的改进...
7. **安全考虑**:由于涉及到网络通信,必须关注安全性问题,例如防止SQL注入、使用SSL/TLS加密通信以保护数据传输安全,以及验证客户端的身份。 8. **设计模式**:CS模式通常结合其他设计模式,如工厂模式用于创建...
17.7 线程安全的单变量操作 403 17.7.1 atomic包简介 403 17.7.2 atomic包中类的具体使用 404 17.8 障碍器 406 17.8.1 CyclicBarrier类简介 406 17.8.2 CyclicBarrier类的具体使用 407 ...
5. **并发编程的改进**:引入了`java.util.concurrent`包,提供了ExecutorService、Future、Callable等高级并发工具类,简化了多线程编程。另外,还增加了Lock接口和ReentrantLock等锁机制,提供更细粒度的锁控制。 ...
在源码中,我们可以看到`java.util.concurrent`包下增加了许多高效并发工具类,如`ConcurrentHashMap`,它提供了线程安全且性能优良的哈希表操作。这些类的实现原理,如分段锁和 CAS(Compare And Swap)操作,都是...
此外,SwingWorker提供了一个用于在后台线程执行计算并更新UI的类,避免了阻塞用户界面。 8. **Scripting API**: JDK 6引入了脚本引擎,允许Java应用程序使用JavaScript、Ruby等脚本语言。ScriptEngine接口和...
增加了ScriptEngine接口,支持脚本语言集成;增强了XML处理,如StAX API,提高了处理大型XML文档的速度。 通过深入学习和掌握JDK 1.6的API,开发者能够编写出高效、稳定、易维护的Java程序。JDK_API_1_6_zh_CN.CHM...