All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.frameworkset.util.CustomizableThreadCreator Maven / Gradle / Ivy

Go to download

bboss is a j2ee framework include aop/ioc,mvc,persistent,taglib,rpc,event ,bean-xml serializable and so on.http://www.bbossgroups.com

There is a newer version: 6.2.5
Show newest version
package org.frameworkset.util;

import java.io.Serializable;
import java.util.concurrent.atomic.AtomicInteger;

public class CustomizableThreadCreator implements Serializable {

	private String threadNamePrefix;

	private int threadPriority = Thread.NORM_PRIORITY;

	private boolean daemon = false;

	private ThreadGroup threadGroup;

	private final AtomicInteger threadCount = new AtomicInteger(0);


	/**
	 * Create a new CustomizableThreadCreator with default thread name prefix.
	 */
	public CustomizableThreadCreator() {
		this.threadNamePrefix = getDefaultThreadNamePrefix();
	}

	/**
	 * Create a new CustomizableThreadCreator with the given thread name prefix.
	 * @param threadNamePrefix the prefix to use for the names of newly created threads
	 */
	public CustomizableThreadCreator(String threadNamePrefix) {
		this.threadNamePrefix = (threadNamePrefix != null ? threadNamePrefix : getDefaultThreadNamePrefix());
	}


	/**
	 * Specify the prefix to use for the names of newly created threads.
	 * Default is "SimpleAsyncTaskExecutor-".
	 */
	public void setThreadNamePrefix(String threadNamePrefix) {
		this.threadNamePrefix = (threadNamePrefix != null ? threadNamePrefix : getDefaultThreadNamePrefix());
	}

	/**
	 * Return the thread name prefix to use for the names of newly
	 * created threads.
	 */
	public String getThreadNamePrefix() {
		return this.threadNamePrefix;
	}

	/**
	 * Set the priority of the threads that this factory creates.
	 * Default is 5.
	 * @see java.lang.Thread#NORM_PRIORITY
	 */
	public void setThreadPriority(int threadPriority) {
		this.threadPriority = threadPriority;
	}

	/**
	 * Return the priority of the threads that this factory creates.
	 */
	public int getThreadPriority() {
		return this.threadPriority;
	}

	/**
	 * Set whether this factory is supposed to create daemon threads,
	 * just executing as long as the application itself is running.
	 * 

Default is "false": Concrete factories usually support explicit cancelling. * Hence, if the application shuts down, Runnables will by default finish their * execution. *

Specify "true" for eager shutdown of threads which still actively execute * a {@link Runnable} at the time that the application itself shuts down. * @see java.lang.Thread#setDaemon */ public void setDaemon(boolean daemon) { this.daemon = daemon; } /** * Return whether this factory should create daemon threads. */ public boolean isDaemon() { return this.daemon; } /** * Specify the name of the thread group that threads should be created in. * @see #setThreadGroup */ public void setThreadGroupName(String name) { this.threadGroup = new ThreadGroup(name); } /** * Specify the thread group that threads should be created in. * @see #setThreadGroupName */ public void setThreadGroup(ThreadGroup threadGroup) { this.threadGroup = threadGroup; } /** * Return the thread group that threads should be created in * (or {@code null} for the default group). */ public ThreadGroup getThreadGroup() { return this.threadGroup; } /** * Template method for the creation of a new {@link Thread}. *

The default implementation creates a new Thread for the given * {@link Runnable}, applying an appropriate thread name. * @param runnable the Runnable to execute * @see #nextThreadName() */ public Thread createThread(Runnable runnable) { Thread thread = new Thread(getThreadGroup(), runnable, nextThreadName()); thread.setPriority(getThreadPriority()); thread.setDaemon(isDaemon()); return thread; } /** * Return the thread name to use for a newly created {@link Thread}. *

The default implementation returns the specified thread name prefix * with an increasing thread count appended: e.g. "SimpleAsyncTaskExecutor-0". * @see #getThreadNamePrefix() */ protected String nextThreadName() { return getThreadNamePrefix() + this.threadCount.incrementAndGet(); } /** * Build the default thread name prefix for this factory. * @return the default thread name prefix (never {@code null}) */ protected String getDefaultThreadNamePrefix() { return ClassUtils.getShortName(getClass()) + "-"; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy