code: public void run()
  	{
  		try
  		{
  			reschedule(null, null);
  			body();
  		} finally
  		{
  			setState(RunState.COMPLETE);
  			resource.unregister(this);
  			BasicSchedulableThread.remove(this);
  			getThread().setName("pool-" + getThread().getId() + "-thread-");
  		}
  	}
docs: /*
  (non-Javadoc)
  @see org.overture.vdmj.scheduler.ISchedulableThread#run()