• Google线程框架com.google.guava


    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);
    }
    }


  • 相关阅读:
    ASP.NET Web API 2 之文件下载
    Windows 查看某个端口号是否被占用
    C# 数据类型之 String(字符串)
    数据表对应关系(一对一、一对多、多对多)
    嫁给程序员的好处,你get到了吗?
    ASP.NET Web API 2 之 HttpRequestMessage 对象
    C# 使用 log4net 记录日志
    Chrome 浏览器快捷键
    C# 获取程序运行时路径
    SpringBoot整合Pagehelper分页插件
  • 原文地址:https://www.cnblogs.com/light-zhang/p/8715160.html
Copyright © 2020-2023  润新知