public void startTimer(String gs, Job j)
	{
		ExecutorService service = Executors.newSingleThreadExecutor();
		final Integer jobId = new Integer((int) j.getId());
		try {
		    Runnable r = new Runnable() {
		        @Override
		        public void run() {
		            while (timers.get(jobId)) {}
		        }
		    };

		    Future<?> f = service.submit(r);
		    
		    f.get(1500, TimeUnit.MILLISECONDS);     // attempt the task for 30 sec
		}
		catch (final InterruptedException e) {
		    // The thread was interrupted during sleep, wait or join
		}
		catch (final TimeoutException e) {
			System.out.println("============ TIMEOUT!!! in " + this.socketURL + "========= for " + gs);
			timers.remove(jobId);
			logger.info("Before" + gridschedulers.toString());
			gridschedulers.remove(gs);
			logger.info(gridschedulers.toString() + "");
		    retry(gs, j);
		}
		catch (final ExecutionException e) {
		    // An exception from within the Runnable task
		}
		finally {
			timers.remove(jobId);
		    service.shutdown();
		}
	}