@Override
		public void run() {
			ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
			lastSample = System.nanoTime();
			lastCPUSample = threadMXBean.getThreadCpuTime(monitoredThread.getId());
			while (true) {
				try {
					Thread.sleep(interval);
				} catch (InterruptedException e) {
					Thread.currentThread().interrupt();
				}

				String currentMethod = getCurrentMethod();
				long currentSample = System.nanoTime();
				long currentCPUSample = threadMXBean.getThreadCpuTime(monitoredThread.getId());
				addMeasurementsIfStillInMethod(currentMethod, currentSample, currentCPUSample);

				lastMethod = currentMethod;
				lastSample = currentSample;

				overhead += System.nanoTime() - currentSample;
			}
		}