/**
  * Create a new thread if $threadId is not already running
  * 
  * @param string $threadId
  * @return X_Threads_Thread_Info|X_Threads_Thread
  */
 public function newThread($threadId)
 {
     $thread = $this->getMonitor()->getThread($threadId);
     if ($thread->getState() == X_Threads_Thread_Info::STOPPED) {
         // create a new thread and return it
         $thread = new X_Threads_Thread($threadId, $this);
         if (!$this->isLogger()) {
             $thread->setLogger(new X_Threads_Logger_Null());
         } else {
             $thread->setLogger(new X_Threads_Logger_File("vlcShares.thread-{$threadId}.log", X_Debug::getLogPath()));
             // redirect standard debug too if enabled
             if (X_Debug::isEnabled()) {
                 X_Debug::i("Forking debug log to {" . X_Debug::getLogPath() . "/vlcShares.thread-{$threadId}.log");
                 X_Debug::init(X_Debug::getLogPath() . "/vlcShares.thread-{$threadId}.log", X_Debug::getLevel());
             }
         }
     }
     return $thread;
 }