pom.xml
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-parent</artifactId>
<version>23.6-jre</version>
</dependency>package cc.zeelan.common.pool;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledThreadPoolExecutor;
public final class ThreadPooBuild {
private static ThreadLocal<ThreadPooBuild> instance = new ThreadLocal<ThreadPooBuild>();
protected static ListeningExecutorService service = null;
protected static ScheduledThreadPoolExecutor scheduledThreadPool = null;
public static ListeningExecutorService getService() {
return service;
}
public static ScheduledThreadPoolExecutor getScheduledThreadPool() {
return scheduledThreadPool;
}
static {
if ((instance.get() == null) || (service == null)) {
syncInit();
}
}
public static void shutdown() {
service.shutdown();
}
private static void syncInit() {
service = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
scheduledThreadPool = new ScheduledThreadPoolExecutor(16);
scheduledThreadPool.setRemoveOnCancelPolicy(true);
}
}
================================================================================================================================调用
package isetting.controller;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import com.google.common.util.concurrent.ListeningExecutorService;
import cc.zeelan.common.pool.ThreadPooBuild;
/**
* 订单编号测试
*
* @project isetting
* @fileName ThreadTest.java
* @Description
* @author light-zhang
* @date 2018年4月2日下午4:56:50
* @version 1.0.0
*/
public class ThreadTest {
public static void main(String[] args) {
/*
* System.out.println((System.currentTimeMillis()+"").substring(5));
* System.out.println( (System.nanoTime()+"").substring(7,10));
*/
for (int i = 0; i < 1; i++) {
ThreadTest test = new ThreadTest();
test.task();
}
}
public void task() {
ListeningExecutorService service = ThreadPooBuild.getService();
service.submit(new Runnable() {
Set<Object> data = new HashSet<Object>();
@Override
public void run() {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 2000000; i++) {
data.add(createOrderCode(UUID.randomUUID().toString().replace("-", "")));
}
System.out.println(data.size());
service.shutdown();
System.out.println("線程執行的時間===== " + ((System.currentTimeMillis() - startTime) / 1000) + "/s");
}
});
}
/**
* 订单号生成
*
* @param orderId
* @return
*/
public String createOrderCode(String orderId) {
int currentTimeMillis_substr = 8;
int nanoTime_start = 7;
int nanoTime_end = 10;
return Math.abs(orderId.hashCode())
+ Long.toString(System.currentTimeMillis()).substring(currentTimeMillis_substr)
+ Long.toString(System.nanoTime()).substring(nanoTime_start, nanoTime_end);
}
}