private synchronized void checkGridletCompletion()
	    {
	        ResGridlet obj = null;
	        int i = 0;
	        double len;

	        // NOTE: This one should stay as it is since gridletFinish()
	        // will modify the content of this list if a Gridlet has finished.
	        // Can't use iterator since it will cause an exception
	        while ( i < gridletInExecList_.size() )
	        {
	            obj = (ResGridlet) gridletInExecList_.get(i);
	            len = obj.getRemainingGridletLength();
	            if (len == 0.0)
	            {
	                gridletInExecList_.remove(obj);
	                gridletFinish(obj, Gridlet.SUCCESS);
	                continue;
	            }

	            i++;
	        }

	        // if there are still Gridlets left in the execution
	        // then send this into itself for an hourly interrupt
	        // NOTE: Setting the internal event time too low will make the
	        //       simulation more realistic, BUT will take longer time to
	        //       run this simulation. Also, size of sim_trace will be HUGE!
	        if (gridletInExecList_.size() > 0) {
	            super.sendInternalEvent(60.0*60.0);
	        }
	    }