/** * Called by a thread that is not the WorkerQueue thread, this method * queues the job and, if necessary, wakes up this worker queue that is * waiting in {@link #getJob}. * @param job */ public synchronized void putJob(Executable job) { // Preconditions if (m_queueThread == null || !m_queueThread.isAlive()) { throw new IllegalStateException("Can't put job, thread is not alive or not present"); } if (isInterrupted()) { throw new IllegalStateException("Can't put job, thread was interrupted"); } putJobImpl(job); }