
并发编程
文章平均质量分 92
qq_30364247
分享java的点点滴滴,大家一起共勉。
展开
-
Executor线程池框架(并发编程篇)
为什么引入Executor线程池框架① 重用存在的线程,减少对象创建、消亡的开销,提高性能;② 线程的创建和运行分开,达到解耦目的;③ 可有效控制最大并发线程数,提高系统资源的使用率;Executor原理Executor生命周期RUNNING:可以接收新任务,并且处理阻塞队列中的任务 SHUTDOWN:关闭状态,不能接收新任务,可以继续处理阻塞队列中的任务。在线程池处于 RUNNING 状态时,调用 shutdown()方法会使线程池进入到该状态。 STOP:不.原创 2022-02-19 00:06:24 · 288 阅读 · 0 评论 -
线程池框架Executor(并发编程篇)
目录为什么引入Executor线程池框架Executor原理Executor生命周期Executor框架介绍与使用ThreadPoolExecutor线程池类ExecutorService接口Executor接口ScheduledExecutorService接口为什么引入Executor线程池框架① 重用存在的线程,减少对象创建、消亡的开销,提高性能;② 线程的创建和运行分开,达到解耦目的;③ 可有效控制最大并发线程数,提高系统资源的使用率;Execu.原创 2020-05-25 22:10:53 · 241 阅读 · 0 评论 -
常用并发工具、并发容器(并发编程篇)
jdk-api中文手册常用的并发辅助工具类CountDownLatch:允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。可以理解为:统计xx-x的航班票数,必须等到多个航空公司(多线程)都统计完成后才能汇总展示给用户。用法:CountDownLatch latch=new CountDownLatch(number),先初始化一个number;再多线程情况下每调用一次countDown()方法,计数-1直到number为0时,再配合await()使用;如...原创 2020-05-25 19:56:05 · 397 阅读 · 0 评论 -
CAS底层原理(并发编程篇)
目录CAS原子性操作CAS底层原理CAS源码解析证明CAS采用自旋高效解决了原子性问题,存在三个缺点:CAS原子性操作Compare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值,否则一直循环(自旋)直到成功。在java中可以通过锁和循环CAS的方式来实现原子操作。Ja原创 2020-05-24 18:51:23 · 391 阅读 · 0 评论 -
volatile底层原理(并发编程篇)
目录学习volatile之前需要掌握工作空间与主内存之间的交互volatile的定义Volatile关键字的语义分析问题:10个线程分别对线程执行1000次i++操作,结果一定是10000吗?volatile的使用场景volatile和synchronized的区别学习volatile之前需要掌握工作空间与主内存之间的交互java内存中线程的工作内存和主内存的交互是由java虚拟机定义了如下的8种操作来完成的,每种操作必须是原子性的。① lock(锁定):作用于.原创 2020-05-24 18:19:29 · 312 阅读 · 0 评论 -
JAVA内存模型、指令重排序、happens-before原则(并发编程篇)
Java内存模型原创 2020-05-24 15:47:22 · 306 阅读 · 0 评论 -
并发编程上(基础篇)
进程与线程进程:系统资源调度与分配的基本单位,一个进程至少有一个线程,进程里面的线程共享进程资源(网络、磁盘空间、内存)线程:cpu分配的基本单位(CPU资源共享)线程共享区和线程独享区线程的生命周期新建状态(new):当线程对象创建后,即新建状态;就绪状态(Runnable):当线程调用start()方法时,线程进入就绪状态,等待CPU时间片的分配;运行状态(Running):当就绪状态的线程获取到CPU分配的时间片时,此刻线程进入运行状态;阻塞状态(Bl.原创 2020-05-10 00:20:32 · 233 阅读 · 0 评论