Package org.mozilla.javascript

## Class Synchronizer

- java.lang.Object
- - org.mozilla.javascript.Delegator
  - - org.mozilla.javascript.Synchronizer

- All Implemented Interfaces:
    `Callable`, `Constructable`, `Function`, `Scriptable`, `SymbolScriptable`

      public class Synchronizer
      extends Delegator

  This class provides support for implementing Java-style synchronized methods in Javascript.

  Synchronized functions are created from ordinary Javascript functions by the `Synchronizer` constructor, e.g. `new Packages.org.mozilla.javascript.Synchronizer(fun)` . The resulting object is a function that establishes an exclusive lock on the `this` object of its invocation.

  The Rhino shell provides a short-cut for the creation of synchronized methods: `sync(fun)` has the same effect as calling the above constructor.

  See Also:
    `Delegator`

- - ### Field Summary

    - ### Fields inherited from class org.mozilla.javascript.Delegator

      `obj`

    - ### Fields inherited from interface org.mozilla.javascript.Scriptable

      `NOT_FOUND`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Synchronizer​(Scriptable obj)` | Create a new synchronized function from an existing one.
    `Synchronizer​(Scriptable obj, java.lang.Object syncObject)` | Create a new synchronized function from an existing one using an explicit object as synchronization object.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.Object` | `call​(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)` | Call the function.

    - ### Methods inherited from class org.mozilla.javascript.Delegator

      `construct, delete, delete, delete, get, get, get, getClassName, getDefaultValue, getDelegee, getIds, getParentScope, getPrototype, has, has, has, hasInstance, newInstance, put, put, put, setDelegee, setParentScope, setPrototype`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Synchronizer

          public Synchronizer​(Scriptable obj)

      Create a new synchronized function from an existing one.
      Parameters:
        `obj` - the existing function

    - #### Synchronizer

          public Synchronizer​(Scriptable obj,
                              java.lang.Object syncObject)

      Create a new synchronized function from an existing one using an explicit object as synchronization object.
      Parameters:
        `obj` - the existing function
        `syncObject` - the object to synchronized on

  - ### Method Detail

    - #### call

          public java.lang.Object call​(Context cx,
                                       Scriptable scope,
                                       Scriptable thisObj,
                                       java.lang.Object[] args)

      Description copied from interface: `Function`
      Call the function.

      Note that the array of arguments is not guaranteed to have length greater than 0.

      Specified by:
        `call` in interface `Callable`
      Specified by:
        `call` in interface `Function`
      Overrides:
        `call` in class `Delegator`
      Parameters:
        `cx` - the current Context for this thread
        `scope` - the scope to execute the function relative to. This is set to the value returned by getParentScope() except when the function is called from a closure.
        `thisObj` - the JavaScript `this` object
        `args` - the array of arguments
      Returns:
        the result of the call
      See Also:
        `Function.call(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable, java.lang.Object[])`