这个是工具类 这个是测试类 可以看出是唯一的,那么在电商生产中可以加上分库分表的id+在模块+userid,加上日期就是唯一的了,不管是任何请求这个id都是唯一的,即使是在分布式环境下 ...
分类:
其他好文 时间:
2019-01-30 18:34:46
阅读次数:
206
起因publicstaticvoidmain(String[]args){ExecutorServiceservice=Executors.newFixedThreadPool(10);service.submit(()->System.out.println("Hello"));System.out.println("World");}呵呵,执行结果谁都知道,显而易见结论线程池的创建的时候
分类:
编程语言 时间:
2019-01-25 18:49:53
阅读次数:
322
//TODO Executors: 锁 1. 内置锁 2. Reentrant-Lock 3. Stamped-Lock 4. ReadWrite-Lock Semaphore 锁是排他的、被锁住的code block 一次只能由唯一的线程在运行。 而Semaphore则可以提供指定数量的 perm ...
分类:
其他好文 时间:
2019-01-25 01:07:24
阅读次数:
194
Executors为我们提供了构造线程池的便捷方法,对于服务器程序我们应该杜绝使用这些便捷方法,而是直接使用线程池ThreadPoolExecutor的构造方法,避免×××队列可能导致的OOM以及线程个数限制不当导致的线程数耗尽等问题。ExecutorCompletionService提供了等待所有任务执行结束的有效方式,如果要设置等待的超时时间,则可以通过CountDownLatch完成。
分类:
编程语言 时间:
2019-01-11 14:16:40
阅读次数:
204
分支/合并框架 ? 分支/合并框架的目的是以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任 务的结果合并起来生成整体结果。它是ExecutorService接口的一个实现,它把子任务分配给 线程池(称为ForkJoinPool)中的工作线程。首先来看看如何定义任务和子任务。 使用Recur ...
分类:
其他好文 时间:
2019-01-07 21:21:44
阅读次数:
130
一、Java 线程池 Java通过Executors提供四种线程池,分别为:1、newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。(线程最大并发数不可控制);线程池为无限大,当执行第二个任务时若第一个任务已经完成,会 ...
分类:
编程语言 时间:
2019-01-07 17:28:52
阅读次数:
511
jdk1.5之前,所有的线程都是需要自己手动创建的,由jvm销毁,当请求过多的时候,频繁的创建和销毁线程是非常浪费资源的。jdk1.5为此做了优化,提供了 java.util.concurrent 包,该包下有个 Executor 接口,官方解释为: 执行已提交的 Runnable 任务的对象。此接 ...
分类:
编程语言 时间:
2019-01-07 00:12:34
阅读次数:
197
前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 结合最近面试的经历,发现这条建议还是十分有用的,因为自 ...
分类:
编程语言 时间:
2019-01-07 00:07:16
阅读次数:
230
概念: 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 使用线程池方式--Runnable接口 通常,线程池都是通过线程池工厂创建,再调用线程池中的方法获取线程,再通过线程去执行任务方法。 步骤: 1、Executors ...
分类:
编程语言 时间:
2019-01-05 13:37:43
阅读次数:
140
(使用newScheduledThreadPool来模拟心跳机制) 1 public class HeartBeat { 2 public static void main(String[] args) { 3 ScheduledExecutorService executor = Executor ...
分类:
其他好文 时间:
2018-12-30 02:40:38
阅读次数:
179