摘要: SynchronousQueue是一种特殊的阻塞队列,该队列没有容量。 【存数据线程】到达队列后,若发现没有【取数据线程】在此等待,则【存数据线程】便入队等待,直到有【取数据线程】来取数据,并释放【存数据线程】; 同理,【取数据线程】到达队列后,若发现没有【存数据线程】在此等待,则【取数据线程】便入队等待,直到有【存数据线程】来存数据,并释放【取数据线程】。 非公平模式,由stack实现,TransferStack 公平模式,由queue实现,TransferQueue 阅读全文
posted @ 2018-09-08 18:50 林城画序 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 线程本地变量,用于同一线程之间的传递。每一个线程对象都保存在两个ThreadLocalMap,threadLocals和inheritableThreadLocals,后者会继承父线程的本地变量,以ThreadLocal对象为key,取得map里的值。 阅读全文
posted @ 2018-08-19 17:59 林城画序 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 线程本质上也是进程。线程机制提供了在同一程序内共享内存地址空间运行的一组线程。对于内核来讲,它就是进程,只是该进程和其他一下进程共享某些资源,比如地址空间。在Java语言里,Thread类封装了线程相关的特性,使用其进行多线程编程。 阅读全文
posted @ 2018-08-19 15:28 林城画序 阅读(457) 评论(0) 推荐(0) 编辑
摘要: Pattern,正则表达式的编译表示,操作字符序列的利器。 阅读全文
posted @ 2018-07-23 23:58 林城画序 阅读(16363) 评论(0) 推荐(3) 编辑
摘要: 系统基础,硬件组成,CPU,内存,高速缓存,虚拟内存,进程,线程等。 阅读全文
posted @ 2018-07-08 16:52 林城画序 阅读(683) 评论(0) 推荐(0) 编辑
摘要: 先说Future, 它用来描述一个异步计算的结果。isDone方法可以用来检查计算是否完成,get方法可以用来获取结果,直到完成前一直阻塞当前线程,cancel方法可以取消任务。而对于结果的获取,只能通过阻塞(get())或者轮询的方式[while(!isDone)]. 阻塞的方式违背了异步编程的理念,轮询的方式耗费无谓的CPU资源(CPU空转)。于是,CompletableFuture应运而生。 阅读全文
posted @ 2018-06-20 22:59 林城画序 阅读(6344) 评论(0) 推荐(3) 编辑
摘要: ForkJoin 框架,另一种风格的线程池(相比于ThreadPoolExecutor),采用分治算法,工作密取策略,极大地提高了并行性。对于那种大任务分割小任务的场景(分治)尤其有用。 阅读全文
posted @ 2018-06-11 21:59 林城画序 阅读(1945) 评论(1) 推荐(0) 编辑
摘要: Phaser,阶段器,可作为一个可复用的同步屏障,与CyclicBarrier和CountDownLatch类似,但更强大。 阅读全文
posted @ 2018-05-27 23:09 林城画序 阅读(1062) 评论(0) 推荐(0) 编辑
摘要: 它是一个线程池执行器(ThreadPoolExecutor),在给定的延迟(delay)后执行。在多线程或者对灵活性有要求的环境下,要优于java.util.Timer。 阅读全文
posted @ 2018-05-19 23:54 林城画序 阅读(536) 评论(1) 推荐(1) 编辑
摘要: 基于优先级队列,以过期时间作为排序的基准,剩余时间最少的元素排在队首。只有过期的元素才能出队,在此之前,线程等待。 阅读全文
posted @ 2018-05-16 22:40 林城画序 阅读(291) 评论(0) 推荐(0) 编辑