package hu.sztaki.ilab.longneck.process.task; import java.lang.management.ManagementFactory; import java.lang.management.ThreadMXBean; import java.util.Calendar; /** * * @author Molnár Péter <molnarp@sztaki.mta.hu> */ abstract public class AbstractTask { /** Startup time. */ private long startTime; /** Enables time measurement and reporting. */ protected boolean measureTimeEnabled = false; /** Thread management bean. */ protected ThreadMXBean mxBean; /** Task statistics. */ protected TaskStatistics stats = new TaskStatistics(TaskType.forClass(this.getClass())); public void run() { if (measureTimeEnabled) { startTime = Calendar.getInstance().getTimeInMillis(); mxBean = ManagementFactory.getThreadMXBean(); mxBean.setThreadCpuTimeEnabled(mxBean.isCurrentThreadCpuTimeSupported()); mxBean.setThreadContentionMonitoringEnabled(mxBean.isThreadContentionMonitoringSupported()); } } public boolean isMeasureTimeEnabled() { return measureTimeEnabled; } public void setMeasureTimeEnabled(boolean measureTimeEnabled) { this.measureTimeEnabled = measureTimeEnabled; } public long getTotalTime() { return Calendar.getInstance().getTimeInMillis() - startTime; } public TaskStatistics getStats() { return stats; } }