# AbstractOwnableSynchronizer

public abstract class **AbstractOwnableSynchronizer** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
implements [Serializable](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Serializable.html)

|---|---|---|
| Known Direct Subclasses [AbstractQueuedLongSynchronizer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html), [AbstractQueuedSynchronizer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html) |---|---| | [AbstractQueuedLongSynchronizer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html) | A version of `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html` in which synchronization state is maintained as a `long`. | | [AbstractQueuedSynchronizer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractQueuedSynchronizer.html) | Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on first-in-first-out (FIFO) wait queues. | |||

A synchronizer that may be exclusively owned by a thread. This
class provides a basis for creating locks and related synchronizers
that may entail a notion of ownership. The
`AbstractOwnableSynchronizer` class itself does not manage or
use this information. However, subclasses and tools may use
appropriately maintained values to help control and monitor access
and provide diagnostics.

### Protected Constructor Summary

|---|---|
|   | [AbstractOwnableSynchronizer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html#AbstractOwnableSynchronizer())() Empty constructor for use by subclasses. |

### Protected Method Summary

|---|---|
| final Thread | [getExclusiveOwnerThread](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html#getExclusiveOwnerThread())() Returns the thread last set by `setExclusiveOwnerThread`, or `null` if never set. |
| final void | [setExclusiveOwnerThread](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/locks/AbstractOwnableSynchronizer.html#setExclusiveOwnerThread(java.lang.Thread))(Thread thread) Sets the thread that currently owns exclusive access. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

## Protected Constructors

#### protected
**AbstractOwnableSynchronizer**
()

Empty constructor for use by subclasses.

## Protected Methods

#### protected final Thread
**getExclusiveOwnerThread**
()

Returns the thread last set by `setExclusiveOwnerThread`,
or `null` if never set. This method does not otherwise
impose any synchronization or `volatile` field accesses.

##### Returns

- the owner thread

#### protected final void
**setExclusiveOwnerThread**
(Thread thread)

Sets the thread that currently owns exclusive access.
A `null` argument indicates that no thread owns access.
This method does not otherwise impose any synchronization or
`volatile` field accesses.

##### Parameters

| thread | the owner thread |
|---|---|