org.mozilla.javascript

## Class Synchronizer

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

All Implemented Interfaces:
  Callable, Function, Scriptable

    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.

Author:
  Matthias Radestock
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 and 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

Methods
`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, get, get, getClassName, getDefaultValue, getDelegee, getIds, getParentScope, getPrototype, has, has, hasInstance, newInstance, 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[])`