The thread blocker object prevents the unintentional creation of too
many threads. This occurs normally when threads are created by
user interaction: The scrollbar
object for example can create a thread whenever its value
changes. If running time of a thread created by user interaction is long,
this would result in many simultaneuosly executing threads and a
very slow response time.
Fig. 1: Two threads A thread blocker object does the following: When executed it creates a new thread and waits until this has terminated. If the thread blocker is called again by a new thread with the old thread still running, the environment, i.e. all variable values of the new thread are saved and the new thread is finished. If now called again, with the first thread still running, the object keeps the environment of the new thread instead of the previous one and the new thread is also finished. Now, when the first thread terminates, the thread object remembers the it has been called in the mean time and restarts execution with the environment of the thread calling the last time.