threadutils.java
来自「spam source codejasen-0.9jASEN - java An」· Java 代码 · 共 87 行
JAVA
87 行
/*
* @(#)ThreadUtils.java 8/01/2005
*
* Copyright (c) 2004,2005 jASEN.org
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the distribution.
*
* 3. The names of the authors may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* 4. Any modification or additions to the software must be contributed back
* to the project.
*
* 5. Any investigation or reverse engineering of source code or binary to
* enable emails to bypass the filters, and hence inflict spam and or viruses
* onto users who use or do not use jASEN could subject the perpetrator to
* criminal and or civil liability.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JASEN.ORG,
* OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
package org.jasen.util;
import org.jasen.thread.StoppableThread;
/**
* <p>
* General thread utils.
* </p>
* @author Jason Polites
*/
public final class ThreadUtils {
/**
*
*/
public ThreadUtils() {
super();
}
/**
* Requests a stop on the thread and forces an interrupt if the thread did not die within the given timeout.
* @param thread The thread to stop
* @param timeout The time in milliseconds to wait for the thread to die
* @return True if the thread died cleanly, or false if it needed to be interrupted
*/
public static boolean forceFinish(StoppableThread thread, long timeout) {
boolean clean = true;
synchronized(thread) {
thread.finish();
try {
thread.join(timeout);
} catch (InterruptedException ignore) {}
if(thread.isAlive()) {
thread.interrupt();
clean = false;
}
thread.notifyAll();
}
return clean;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?