設置一個守護線程,和一個執行線程,讓守護線程去執行邏輯,超時後中斷執行線程,守護線程也隨之中斷。
/**
* @author Livingdd
* 設置一個執行線程和一個守護線程,讓守護線程去執行
* 2019/11/14 21:43
**/
public class ThreadService {
private Thread excuteThread;
private boolean finshed = false;
public void excute(Runnable task){
excuteThread = new Thread(){
@Override
public void run() {
Thread runner = new Thread(task);
runner.setDaemon(true);
runner.start();
try {
runner.join();
finshed = true;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
excuteThread.start();
}
public void shutDown(long mills){
long currentTime = System.currentTimeMillis();
while(!finshed){
if(System.currentTimeMillis() - currentTime >= mills){
excuteThread.interrupt();
}
try {
excuteThread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}