1.2.0 增加异步线程处理工具

This commit is contained in:
yexuejc
2018-10-19 11:40:19 +08:00
parent 5ecb759db9
commit e00164f85b
4 changed files with 62 additions and 2 deletions

View File

@@ -1,6 +1,9 @@
package com.yexuejc.base.util;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.net.URL;
import java.util.concurrent.*;
/**
* 系统工具类
@@ -35,4 +38,42 @@ public class SysUtil {
return clazz.getClass().getResource(StrUtil.setStr(filePath, "/"));
}
/**
* 开启线程执行<p>
* 异步处理代码
*
* @param threadRun
*/
public static void threadRun(ThreadRun threadRun) {
threadRun(null, threadRun);
}
/**
* 异步处理代码
*
* @param poolName 开启线程名称
* @param threadRun
*/
public static void threadRun(String poolName, ThreadRun threadRun) {
if (StrUtil.isEmpty(poolName)) {
poolName = "java-pool-%d";
}
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat(poolName).build();
ExecutorService singleThreadPool = new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
singleThreadPool.execute(() -> {
threadRun.execute();
});
singleThreadPool.shutdown();
}
/**
* 异步执行代码块
*/
public interface ThreadRun {
void execute();
}
}