# Class WatcherCleaner

java.lang.Object
java.lang.Thread
org.apache.zookeeper.server.watch.WatcherCleaner

All Implemented Interfaces:
  `Runnable`

public class WatcherCleaner extends Thread
Thread used to lazily clean up the closed watcher, it will trigger the clean up when the dead watchers get certain number or some number of seconds has elapsed since last clean up. Cost of running it: - need to go through all the paths even if the watcher may only watching a single path - block in the path BitHashSet when we try to check the dead watcher which won't block other stuff

## Nested Class Summary

### Nested classes/interfaces inherited from class Thread

`Thread.State, Thread.UncaughtExceptionHandler`

## Field Summary

### Fields inherited from class Thread

`MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY`

## Constructor Summary

Constructors
Constructor
Description
`WatcherCleaner(IDeadWatcherListener listener)`
`WatcherCleaner(IDeadWatcherListener listener, int watcherCleanThreshold, int watcherCleanIntervalInSeconds, int watcherCleanThreadsNum, int maxInProcessingDeadWatchers)`

## Method Summary

Modifier and Type
Method
Description
`void`
`addDeadWatcher(int watcherBit)`
`void`
`run()`
`void`
`shutdown()`

### Methods inherited from class Thread

`activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield`

### Methods inherited from class Object

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

## Constructor Details

### WatcherCleaner

public WatcherCleaner(IDeadWatcherListener listener)

### WatcherCleaner

public WatcherCleaner(IDeadWatcherListener listener, int watcherCleanThreshold, int watcherCleanIntervalInSeconds, int watcherCleanThreadsNum, int maxInProcessingDeadWatchers)

## Method Details

### addDeadWatcher

public void addDeadWatcher(int watcherBit)

### run

public void run()

Specified by:
  `run` in interface `Runnable`
Overrides:
  `run` in class `Thread`

### shutdown

public void shutdown()