docs: public void addTask(Object objJobDef)
      {
          synchronized (this)
          {
              gvJobs.addElement(objJobDef); // Vector is thread safe.
              if (giCurrentThreads >= giMaxThreads)
                  return;             // The max threads are running... let the scheduler process them in order
              giCurrentThreads++;     // I'm going to start another thread
          }
          TaskScheduler js = this.makeNewTaskScheduler(0);
          // This should be done more efficiently... having the threads waiting in a pool to be awakened when needed.
          Thread thread = new Thread(js, "TaskSchedulerThread");
          thread.start();
      }