synchronized void doDelay(int milliseconds) {
          // ожидает указанное время, или пока не прервет управляющее сообщение присланное через setMessage()
          // для неопределенно длительного ожидания < 0
         if (milliseconds < 0) {
            try {
               wait();
            }
            catch (InterruptedException e) {
            }
         }
         else {
            try {
               wait(milliseconds);
            }
            catch (InterruptedException e) {
            }
         }
      }