java的定时任务内免不了用线程去处理一些业务,本文将讲解如何自己随意控制一个线程对业务的处理。
直接上代码:
List threadList = new ArrayList<>(); //获取线程正在运行的线程 ThreadGroup currentGroup1 = Thread.currentThread().getThreadGroup(); int noThreads1 = currentGroup1.activeCount(); Thread[] lstThreads1 = new Thread[noThreads1]; currentGroup1.enumerate(lstThreads1); for (int j = 0; j < noThreads1; j++) { String nm = lstThreads1[j].getName(); threadList.add(nm); }
可以将threadList 打印出来,看看你服务的上所有运行的线程。
自己new 一个线程,如何命名呢?
Thread.currentThread().setName(name);
name你可以定义一个唯一的uuid自己在业务中去区分。
如何停止自己命名的这个线程呢:
ThreadGroup currentGroup = Thread.currentThread().getThreadGroup();
int noThreads = currentGroup.activeCount();
Thread[] lstThreads = new Thread[noThreads];
currentGroup.enumerate(lstThreads);
for (int j = 0; j < noThreads; j++) {
String nm = lstThreads[j].getName();
if (nm.equals(documentName)) {
lstThreads[j].stop();
}
}
//stop虽然过时,但可以起作用。找到指定线程并杀死,interrupted 和isinterrupted 只是作为标识 不能停止该线程
定时任务如何延时呢:
Thread.selep(1000)
毫秒,1000毫秒=1秒。
如果不理解可以私信博主,求关注