public void run()
	{
		synchronized(taskList)
		{
			while( true )
			{
				long time = System.currentTimeMillis();

				if( nextTime <= time )
				{
					nextTask.getTask().runWatchdogTask(time);
					nextTask.setLastExecMillis(time);
					updateNextTask();
				}

				if( nextTask != null && taskList.size() > 0 )
				{
					time = System.currentTimeMillis();

					long timeToSleep = nextTime - time;

					if( timeToSleep > 0 )
					{
						try
						{
							taskList.wait(timeToSleep);
						}
						catch(InterruptedException e)
						{
						}

						continue;
					}
					else if( timeToSleep == 0 || nextTime == 0 )
						continue;
				}

				try
				{
					taskList.wait();
				}
				catch(InterruptedException e)
				{
				}
			}
		}
	}