I've been pulling my hair out over this. My program is supposed to measure the CPU time in searching a hashtable that uses a simple double hashing algorithm. However, ThreadMXBean keeps returning me -1. Any help is appreciated.
Snippet of "main"
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
//CREATE A THREAD
DoubleHashThread doubleThread =
new DoubleHashThread("doublethread"); //CREATE DOUBLE HASHING THREAD
doubleThread.setDaemon(true);
doubleThread.start();
getCpuTime(doubleThread);
doubleThread.run(hashTable,data); //RUN SEARCH FUNCTION
getCpuTime(doubleThread);
GetCpuTime Method
public static long getCpuTime(DoubleHashThread dt)
{
ThreadMXBean bean = ManagementFactory.getThreadMXBean(); //GET THREAD BEAN
long cpuTime = 0;
if (bean.isThreadCpuTimeSupported()) //if grabbing it is supported, continue
{
System.out.println("CPU time for " + dt.getId() + " " + dt.getName() +
" is " + bean.getThreadCpuTime(dt.getId()));
}
return cpuTime;
}
DoubleHashThread.java
import doubleHash.DoubleHash;
public class DoubleHashThread extends Thread
{
public DoubleHashThread(String s)
{
this.setName(s);
}
//RUNS SEARCH FUNCTION
public void run(String[] hashTable, String data)
{
DoubleHash.searchTable(hashTable,data); //run Double Hash's search
}
}