Browse Source

track threads being used

lakebane-ai
FatBoy-DOTC 2 weeks ago
parent
commit
29aea83217
  1. 33
      src/engine/job/JobThread.java

33
src/engine/job/JobThread.java

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
package engine.job;
import engine.server.world.WorldServer;
import org.pmw.tinylog.Logger;
import java.util.concurrent.TimeUnit;
@ -9,6 +10,8 @@ public class JobThread implements Runnable { @@ -9,6 +10,8 @@ public class JobThread implements Runnable {
private final AbstractJob currentJob;
private final ReentrantLock lock = new ReentrantLock();
private static Long nextThreadPrint;
public JobThread(AbstractJob job){
this.currentJob = job;
}
@ -37,5 +40,35 @@ public class JobThread implements Runnable { @@ -37,5 +40,35 @@ public class JobThread implements Runnable {
Thread thread = new Thread(jobThread);
thread.setName("JOB THREAD: " + job.getWorkerID());
thread.start();
if(JobThread.nextThreadPrint == null){
JobThread.nextThreadPrint = System.currentTimeMillis();
}else{
if(JobThread.nextThreadPrint < System.currentTimeMillis()){
JobThread.tryPrintThreads();
JobThread.nextThreadPrint = System.currentTimeMillis() + 10000L;
}
}
}
public static void tryPrintThreads(){
ThreadGroup rootGroup = Thread.currentThread().getThreadGroup();
while (rootGroup.getParent() != null) {
rootGroup = rootGroup.getParent();
}
// Estimate the number of threads
int activeThreads = rootGroup.activeCount();
// Create an array to hold the threads
Thread[] threads = new Thread[activeThreads];
// Get the active threads
rootGroup.enumerate(threads, true);
int availableThreads = Runtime.getRuntime().availableProcessors();
// Print the count
Logger.info("Total threads in application: " + threads.length + " / " + availableThreads);
}
}

Loading…
Cancel
Save