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


原文地址:https://www.cnblogs.com/light-zhang/p/8715160.html

时间: 2024-11-10 02:14:18

Google线程框架com.google.guava的相关文章

Google的Java常用类库 Guava

Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库. 1. 基本工具 [Basic utilities] 让使用Java语言变得更舒适 1.1 使用和避免null:null是模棱两可的,会引起令人困惑的错误,有些时候它让人很不舒服.很多Guava工具类用快速失败拒绝null值,而不是盲目地接受 1.2 前置条件: 让方法中的条件检查更简单 1.3 常见Object方法: 简化Object方法实现,如hashCode()和toSt

通信框架浅析--google protobuf vs facebook thirft

protobuf 请参考下面这篇文章 http://blog.csdn.net/hguisu/article/details/20721109 WINDOWS配置THRIFT开发环境 1)安装thrift:到thrift官网下载exe文件,然后将文件重命名为thrift.exe,拷贝到c:\windows目录下(或者任何目录下),然后就可以在dos环境下使用了 c:\windows>thrift -gen java D:\mywork\javaProject\thriftTest\test.th

好用的Google漏洞爬虫:Google Mass Explorer

这是一款基于谷歌搜索引擎的自动化爬虫. 爬虫介绍 爬虫大体机制就是: 先进行一次谷歌搜索,将结果解析为特定格式,然后再提供给exp使用. 大家可以尝试使用–help来列出所有参数. 这个项目笔者会持续更新,以后再添加新的exp进行升级.此外,它会利用google_parsers模块去构建exp解析搜索结果,所以当你开始搜索时,可以选择"–exploit parser"参数来指定相应exp. google parsers模块(google_parsers.py)以后还会继续优化,而现在的

【转】Expire Google Drive Files 让Google Docs云盘共享连接在指定时间后自动失效

最近在清理Google Docs中之前共享过的文件链接,发现Google Docs多人协作共享过的链接会一直存在,在实际操作中较不灵活.正好订阅的RSS推送了Pseric写的这篇文章 - Expire Google Drive Files 让Google 云端硬碟共用连结在指定时间后自动失效,文中介绍的Expire Google Drive Files可以让Google  Docs云盘共享连接在指定时间后自动失效解决了指定时间内权限失效的问题. —————————————————————————

Google 网上论坛(Google Online Forums)

插件介绍: 论坛是互联网上一种可以让用户自由发布信息或提出看法的社交平台,Google 网上论坛是一种在线的论坛或邮箱列表,能够帮助论坛成员用电子邮件和 Web进行交流.每个论坛都有一个由 Google 托管的主页,论坛成员可以在该页上展开对新主题的讨论,或就现有主题做出答复. 使用说明: 将Google 网上论坛(Google Online Forums)添加至chrome,并在应用中启动它. 功能介绍: *表达自己使用丰富的文本编辑,以自定义您的职位,字体,颜色和图像.*人民权力讨论用照片.

Google Play Store —与google服务器通信时出现问题

机子:MX4 前几天刷完机后出现登录Google Play Store “与google服务器通信时出现问题”,今天试了好几种方法,来总结一下 1.修改最新Hosts文件 2.SmartHosts  “ 解决谷歌账号无法登录,与Google服务器通信时出现问题的软件及用法” 但我感觉(1) & (2)都是为了能翻过墙 3.删除/etc目录下的hosts文件 4.修改账号验证   ”与Google服务器通信出现问题 “解决方法 最后成功的方法是 5.把Google商店改回老版本比如5.X版本  解

线程框架Executor的用法举例

java5线程框架Executor的用法举例 Executor 是 java5 下的一个多任务并发执行框架(Doug Lea),可以建立一个类似数据库连接池的线程池来执行任务.这个框架主要由三个接口和其相应的具体类组成.Executor. ExecutorService 和 ScheduledExecutorService . 1. Executor 接口:是用来执行 Runnable 任务的:它只定义一个方法- execute(Runnable command):执行 Ruannable 类型

Google Volley框架源码走读

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<Google Volley使用之自定义> http://blog.csdn.net/yanbober/article/details/45307099 开源项目链接 Volley自定义 Android Developer文档 Volley主页:https://android.g

Google Volley框架之https请求

先插一句.Google出的volley框架本身是支持https请求的,可是仅仅是针对有第三方机构认证过的. 假设自己随便在网上搞的一个证书,那volley是不支持请求的. 本文讲下怎样让volley支持自己搞的https证书. 改动volley源代码:com.android.myvolley.toolbox.HurlStack /** * Create an {@link HttpURLConnection} for the specified {@code url}. */ protected