code: private void finished(Long taskTag)
     {
        lock.lock(); // task execution thread is finished now, so we don't check interrupts
        try
        {
           Task task = this.tasks.remove(taskTag); // 'null' task tag is the untagged task
           this.enabled.remove(task);
           this.capacity++;
           this.notFull.signalAll();
           this.unblocked.signalAll();
        }
        finally
        {
           lock.unlock();
        }
     }
docs: Called by {@link TaskContainer#run()} when execution of the task is complete.