On Apr 7, 12:08 pm, [EMAIL PROTECTED] wrote: > Hi Guys, > > I know every time calling Context.enter(), we must call Context.exit() > after interpreting script. > But I still have questions about that. > > 1. If I uses one dedicated thread to interpret script(this thread is > reused), must I every time call > Context.enter() before interpreting script and Context.exit() after > interpreting script? > > Can I just call one time Context.enter() when start this thread, then > this thread interprets many script. At last can I let this thread die > by itself at last without calling Context.exit() > > 2. What does Context really do and what Rhino store in Context? Does > it hold any resource, we have to call Context.exit() explicitly to > release them. > > Thanks. > > nbruce
Rhino stores information about the configuration and runtime state of the JavaScript execution in a Context object. The first Context.enter() on a given thread creates a Context and a ThreadLocal, and references the Context from the ThreadLocal. Subsequent calls to Context.enter() on that thread return the associated Context. So if you let a thread die without calling Context.exit() on it, the ThreadLocal will be collected along with the associated Context. However, it isn't recommended to do this as ContextFactory allows clients to register listeners that are invoked with the Context is released; these listeners won't be called if you don't call Context.exit(). The Rhino debugger registers a listener for that event but doesn't perform any processing, so you could likely get away with it now but could cause problems with other services or in future versions of Rhino. --Norris _______________________________________________ dev-tech-js-engine-rhino mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino
