并发编程
文章平均质量分 81
元It
张定元
展开
-
并发编程之ThreadLocal
并发编程之ThreadLocal1.简介 ThreadLocal 中填 充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal 为变量 在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量,实现线程封闭的一种方式。例如:2.原理 ThreadLocal是一个泛型类它可以接收任何数据类型的储存,其底层是用一个ThreadlocalMap来实现,每个线程会有一个ThreadlocalMap的对象,ThreadlocalMap是Map的一种,以key,value的原创 2021-07-22 19:51:47 · 81 阅读 · 0 评论 -
并发编程之线程池的创建及其底层原理
线程池的创建及其底层原理1.概述 当任务多且处理任务的时间比较短的时候,为了减少频繁创建线程产生的消耗创建了线程池2.ThreadPoolExecutor线程池的创建(java.util.concurrent包下、线程安全)构造方法:参数1.corePoolSize:核心线程数。 默认采用的创建线程的方法是,当任务来的时候才创建线程 可调用prestartAllCoreThreads()或者 prestartCoreThread()方法,去实现预所有核心数原创 2021-07-22 11:24:11 · 91 阅读 · 0 评论 -
java并发编程之锁
java并发编程的各种锁1.乐观锁 乐观锁并不是一种真正的锁,基于cas的思想,认为,并发操作不会修改数据的值。 适用于读比较多的场景(不阻塞线程,大大提效率)2.悲观锁 悲观锁认为并发操作会对数据进行修改,认为并发操作不加实际的锁会出现错误, 适用于写比较多的操作3.公平锁 在程序在并发操作时,一个加锁的线程工作,其他的线程会进入阻塞队列,当加锁的线程运行结束阻塞队列的下一个线程获得cpu。(优先给排队时间最长的线程)4非公平锁 非公平锁,当一个加锁线程在运行时,其他线程原创 2021-07-21 18:50:07 · 101 阅读 · 0 评论 -
并发编程之概述
并发编程1.并发与并行 并发:在一段时间内做了多件事(宏观上是同时进行,微观上是一个一个执行,只不过时间片交替时间短,看起来像同时执行)。 并行:在一个时间点有多件事情在执行(基于多核cpu,cpu在一个时间点只能做一件事情)2.java的内存模型 由于cpu和内存之间读写速度有很大差异,所以在cpu和内存之间加入了高速缓存3.并发编程后的三大问题以及解决方案1.可见性 由于cpu,工作缓存、主内存之间的速度差异,导致线程1在工作中的数据先读入工作内存(前提多核)这时如果有另一个原创 2021-07-21 18:49:02 · 69 阅读 · 0 评论