public void run() {
		long start = System.currentTimeMillis();
		long sleepTil = start;
		while(System.currentTimeMillis() - start < duration && !stop) {
			sleepTil += interval;
			
			try {
				sleep(sleepTil - System.currentTimeMillis());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			if (!stop) {
				cb.callback();
			}

		}
		expired = true;
		if (!stop) {
			cb.expired();
		}
	}