Multiple globals using the same thread

A. Sundararajan sundararajan.athijegannathan at oracle.com
Mon Oct 13 07:58:56 UTC 2014


If the question is about can I use mulitple globals in the same thread, 
yes that is also possible.

Just create another javax.script.Bindings and set it as ENGINE_SCOPE in 
your ScriptEngine instance. Any future "eval" on that engine will use a 
fresh 'global' scope object.

Within a script, you can use loadWithNewGlobal function to load  a 
script into a fresh JS global scope object.
See also https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions

-Sundar

On Monday 13 October 2014 01:18 PM, Attila Szegedi wrote:
> Globals don't have a thread affinity, but they're also not threadsafe (since JavaScript as a language isn't). This means that you can have multiple threads share one Global, but not concurrently; you'll need to provide synchronization around thread access to your Global, to make sure only one thread is using it at any given time.
>
> Attila.
>
> On Oct 12, 2014, at 9:07 PM, Serguei Mourachov <smourachov at gmail.com> wrote:
>
>> We have a project where several thousands of script "instances" should be called/executed using limited number of threads.
>> Is it possible to use multiple global objects invoking script functions from the same thread?
>>



More information about the nashorn-dev mailing list