The Bytecode Club
Log inJoin the club
Programming

Basic/Tiny Thread Manager

Started by Konloch · Oct 1, 2014

2 replies109,126 views
Oct 1, 2014#1
package me.konloch.kontainer.api.threading;

import java.util.ArrayList;

/**
 * A simple thread manager class
 * 
 * @author Konloch (http://konloch.me | http://the.bytecode.club)
 * 
 * TODO:
 * Make addThread return an int for the thread id, then make a basic tracking system
 * ^ use some form of map to do this (hashmap?)
 *
 */

public class ThreadManager {

	private ArrayList<Thread> threadPool;
	
	/**
	 * Create a new instance of the thread manager
	 */
	public ThreadManager() {
		threadPool = new ArrayList<Thread>();
	}
	
	/**
	 * Adds a thread to the thread pool
	 * @param t the thread
	 */
	public void addThread(Thread t) {
		threadPool.add(t);
	}
	
	/**
	 * Removes the thread object from the pool
	 * @param t the cached thread object
	 */
	public void removeThread(Thread t) {
		threadPool.remove(t);
	}
	
	/**
	 * Starts all non-active threads
	 */
	public void startThreads() {
		for(Thread t : threadPool)
			if(!t.isAlive())
				t.start();
	}
	
	/**
	 * Attempts to halt all the active threads
	 */
	@SuppressWarnings("deprecation")
	public void stopThreads() {
		for(Thread t : threadPool)
			t.stop(); //< incase the stop function is overrided so they can handle an external stop.
	}
	
	/**
	 * If threads are running it'll return true;
	 * @return if any threads are running
	 */
	public boolean areThreadsRunning() {
		for(Thread t : threadPool)
			if(t.isAlive())
				return true;
		return false;
	}
}

Feel free to do what you want with it, read the TODO list for improvements.

Got something to add?

Log in to post a reply.

Join the conversation