Java并发——线程池Executor框架 线程池 无限制的创建线程 若采用"为每个任务分配一个线程"的方式会存在一些缺陷,尤其是当需要创建大量线程时: 线程生命周期的开销非常高 资源消耗 稳定性 引入线程池 任务是一组逻辑工作单元,线程则是使任务异步执行的机制。当存在大量并发任务时,创建、销毁线程 ...
分类:
编程语言 时间:
2019-10-09 09:43:51
阅读次数:
107
欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写的线程池如何测试? 简介 线程池是Java并发编程中经常使用到的技术,那么自己如何动手写一个线程池呢?本文彤哥将手把手带 ...
分类:
编程语言 时间:
2019-10-09 09:34:40
阅读次数:
93
线程池 无限制的创建线程 若采用"为每个任务分配一个线程"的方式会存在一些缺陷,尤其是当需要创建大量线程时: 线程生命周期的开销非常高 资源消耗 稳定性 引入线程池 任务是一组逻辑工作单元,线程则是使任务异步执行的机制。当存在大量并发任务时,创建、销毁线程需要很大的开销,运用线程池可以大大减小开销。 ...
分类:
编程语言 时间:
2019-10-08 19:12:51
阅读次数:
91
ConcurrentLinkedQueue ConcurrentLinkedQueue内部的队列使用带头节点的单向链表实现,并且维持头尾两个指针,头指针出队、尾指针入队。该队列的出队入队操作都是线程安全的。 保证安全的方式 对于头尾指针均使用volatile关键字修饰从而保证可见性,对于头尾指针的修 ...
分类:
编程语言 时间:
2019-10-07 11:19:57
阅读次数:
78
可见性 对象引用的可见性与对象域可见性不同??? 锁在保证原子性的同时保证了可见性 原子性通过引入不可分割的语义,保证了自身的执行的正确性,通过状态集不被其他线程修改。 可见性:自身的执行对状态的修改可能影响其他线程的约束。修改——可见存在延迟,可见性去除了其中的延迟。 提供可见性的状态维护了这组状 ...
分类:
编程语言 时间:
2019-10-05 22:15:14
阅读次数:
111
一、概述1.1 线程与进程区别1.2 多线程引发的性能问题二、多线程创建方式2.1 第一种-继承Thread类2.2 第二种-实现Runnable接口2.3 第三种-实现Callable接口2.4 常用线程构造函数2.5 使用继承Thread类还是使用实现Runnable接口好?三、线程基础知识3.... ...
分类:
编程语言 时间:
2019-10-05 14:39:19
阅读次数:
102
一、好处 1、通过重复利用已创建爱的线程降低线程创建和销毁造成的消耗:降低资源消耗 2、当任务到达时,任务可以不需要等到线程就能立即执行:提高响应速度 3、进行统一分配、调优和监控:提高线程的可管理性 二、Excutor 1、Executors:静态工厂类,提供了Executor、ExecutorS ...
分类:
编程语言 时间:
2019-10-05 10:52:29
阅读次数:
73
[TOC] 基础篇 https://snailclimb.top/JavaGuide/ /java/Multithread/JavaConcurrencyBasicsCommonInterviewQuestionsSummary?id=_7 %e4%bb%80%e4%b9%88%e6%98%af%e ...
分类:
编程语言 时间:
2019-10-05 10:44:00
阅读次数:
101
Java中的多线程你只要看这一篇就够了 ThreadMXBean使用 ReentrantLock的使用 Java并发编程:线程池的使用 ...
分类:
编程语言 时间:
2019-09-30 13:11:15
阅读次数:
109
1. 定义 发布对象(Publish): 使一个对象能够被当前范围之外的代码所使用 对象逸出(Escape): 一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见 2. 问题 正确发布一个对象遇到的两个问题: (1)引用本身要被其他线程看到; (2)对象的状态要被其他线程看到。 ps: ...
分类:
编程语言 时间:
2019-09-29 17:04:25
阅读次数:
78