并发
nzch
这个作者很懒,什么都没留下…
展开
-
heima并发---阻塞队列--274以后(166-171)
---166------167---put方法:---168------169------170------171---原创 2020-06-28 23:11:01 · 124 阅读 · 0 评论 -
heima并发32---ConcurrentHashMap(JDK7)--274以后(159-165)
不是延时初始化,初始化的话创建下标为0元素。对应一个小的hash表。---159------160---???---161---原创 2020-06-26 21:05:33 · 93 阅读 · 0 评论 -
heima并发31---ConcurrentHashMap--274(150-158)
volatile就是配合cas保证线程安全的。两个作用,一个是代表链表处理完毕,一个是去新的链表找。链表比较长就是从o(1)到o(n)。用红黑树替换下。8先尝试扩容,到64以后,变为红黑树,6变回来。---150---源码分析:三个参数,初始容量,负载因子,办法度。实现的是懒惰的初始化,第一次用的时候才会初始化的。8的话就是16。0.75是扩容的阈值。下次扩容就扩容为16。---151---get方法:get的全程不加锁的。..原创 2020-06-26 20:45:38 · 146 阅读 · 0 评论 -
heima并发9---第五章--134-157
jmm模型。JMM内存模型解决的是原子性有序性和可见性。---134---代码:---135---改进:---136------137------新的:---138---这块sync保护是为了防止多线程进来的。---139---犹豫模式的应用。---140------加ready防止之前的代码排到后面去。---141-145---注意写膨胀和读屏障加在哪里。读屏障:..原创 2020-06-20 19:32:00 · 166 阅读 · 0 评论 -
heima并发8---reentrantLock预习--128-135
---128------129---我自己写的:---130------131---park和unpark去解决的代码:LockSupport是不可重入的:https://blog.csdn.net/aitangyong/article/details/38373137---132---小结---133---原创 2020-06-19 19:23:06 · 133 阅读 · 0 评论 -
heima并发6-----110-119---第四章
---110---代码:---首先是wait状态---然后是BLOCK就是Monitor---------111-113---原创 2020-06-19 11:00:54 · 102 阅读 · 0 评论 -
heima并发4-----97-107(一些设计模式)---第四章
---97---代码:---功能增强:加入超时时间------98-100---join原理:---101------代码:---测试:---102-104------测试。---105-107---原创 2020-06-18 15:19:20 · 205 阅读 · 0 评论 -
heima并发3---75-96---第四章
Monitor是操作系统的对象。在对象的对象头用指针关联的。基本的原理:---75---字节码角度的Monitor---76-78---左边的是栈帧的锁对象分为:存的是加锁对象的Mark word和对象的指针。---79---锁的膨胀:重量级锁的地址后两位就变成10了。---80---自旋优化。---81---...原创 2020-06-18 13:31:05 · 230 阅读 · 0 评论 -
heima并发2-----50-74
---50-51-52-53---synchronized:---54------55-58---synchronized加在方法上。---59---线程八锁。看下笔记。---60-62------63-64----代码:局部变量暴露给外部会有什么问题?---65---66---原创 2020-06-17 14:08:04 · 152 阅读 · 0 评论 -
heima并发1-----01-49
视频:https://www.bilibili.com/video/BV16J411h7Rd?p=5---01---05---并行和并发---06---代码。---07-08------09---关于FutureTask:https://www.cnblogs.com/dolphin0520/p/3949310.html---10------11------12------13---原理:这个target就是..原创 2020-06-16 21:51:01 · 140 阅读 · 0 评论 -
java并发编程实战wwj----------第三阶段-------------CompletableFuture---------------56-59
代码:第二段代码:这里设置的是守护线程。代码:package three.completeFuture;import java.util.List;import java.util.concurrent.*;import java.util.stream.Collectors;import java.util.stream.IntStream;import static java.util.stream.Collectors.toList;publ原创 2020-05-20 07:52:26 · 197 阅读 · 0 评论 -
heima并发---ConcurrentHashMap系列后续-p7-281和以后
默认是0。数组初始化-1。初始化之后变为阈值。---多线程同时扩容的话如何进行扩容?如何扩容?扩容:---34分钟。---90分钟面试要点。------p7---...原创 2020-05-04 23:05:43 · 117 阅读 · 0 评论 -
heima并发---ConcurrentHashMap系列后续-p6-281和以后
博客:https://www.cnblogs.com/cjsblog/p/10017911.html博客:https://www.jianshu.com/p/865c813f2726------put方法: final V putVal(K key, V value, boolean onlyIfAbsent) { // 这里面的key和val...原创 2020-05-04 22:23:18 · 233 阅读 · 0 评论 -
heima并发---ConcurrentHashMap系列后续-p5-281和以后
JDK8的hashMap:https://blog.csdn.net/goosson/article/details/8102972926:00红黑树完毕。---网址:https://www.bilibili.com/video/BV1x741117jq?p=5---进入put方法:---p5---原创 2020-05-02 17:48:37 · 179 阅读 · 0 评论 -
heima并发---ConcurrentHashMap系列后续-p4-281和以后
红黑树红黑树与AVL:https://www.jianshu.com/p/37436ed14cc6红黑树:https://www.jianshu.com/p/e136ec79235chttps://baijiahao.baidu.com/s?id=1641940303518144126&wfr=spider&for=pchttps://www.cnblogs.com...原创 2020-05-02 17:39:54 · 230 阅读 · 0 评论 -
heima并发---ConcurrentHashMap系列后续-p3-281和以后
地址:https://www.bilibili.com/video/BV1x741117jq?p=3---P3---原创 2020-05-01 12:55:06 · 168 阅读 · 0 评论 -
heima并发---ConcurrentHashMap系列后续-p1-p2-281和以后
地址:---281---原创 2020-04-30 16:36:01 · 150 阅读 · 0 评论 -
heima并发30---ConcurrentHashMap--274(143-149)
遗留的安全集合:Hashtable Vector使用Collections修饰的安全集合---装饰模式::基于锁ReentrantLock。:修改时候拷贝实现线程安全。---274---单词计数:---275------276------277------278------279------280------281---...原创 2020-04-29 14:38:05 · 154 阅读 · 0 评论 -
heima并发29---Cyclicbarrier--271-273
老的创建方法的缺点:这个方法的缺点是每次都要重新创建countDownLatch。---271---执行第三个任务,作为汇总任务,可以重复使用。变为0再次调用变为2。---272---这个一定要保持一致的。---273---...原创 2020-04-29 11:31:08 · 123 阅读 · 0 评论 -
heima并发28---countDowm和future---266-270
代码:---266---代替join,使用繁琐。线程池的改进:---267---王者荣耀,都加载完毕游戏开始。---268---订单信息,商品信息,物流信息,以后用微服务的方式调用的,用rest调用的。---269---Future。结果还没传递给主线程的。---270---...原创 2020-04-29 11:08:12 · 212 阅读 · 0 评论 -
heima并发27---semaphore---261-265
信号量。信号量是用来限制能访问共享资源的线程上限的。共享资源有多个,允许访问共享资源,只是希望对线程的上限进行控制。停车场,汽车,剩余的空闲车位。---261---代码:package cn.itcast.n8;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.Semaphore;im...原创 2020-04-26 14:19:46 · 170 阅读 · 0 评论 -
heima并发26---并发工具包(5)---读写锁原理和java8的stmaplock--253--260
读写锁的流程。---253---原创 2020-04-24 23:48:13 · 165 阅读 · 0 评论 -
heima并发25---并发工具包(4)---读写锁--247-252
---247---原创 2020-04-24 12:12:44 · 162 阅读 · 0 评论 -
heima并发24---并发工具包(3)---条件变量--245-246
每个条件变量对应一个conditionObject这个对象,内部也是维护了一个双向链表的。await流程和signal流程。这个方法就是线程加入到条件变量的双向链表里面去。可知:接下来:这个方法是节点上的所有锁都释放掉,包括锁重入的次数。唤醒等待队列的下一个节点,竞争。等待被唤醒。---245------246---...原创 2020-04-24 07:17:32 · 138 阅读 · 0 评论 -
heima并发23---并发工具包(2)---reentrantLock---238-244
非公平锁的实现原理:非公平锁的加锁流程。---238---当出现竞争的时候则:进去:注意凡是带try的都是只改变状态的。尝试创建一个节点对象,并加入到等待队列。等待队列是一个双向链表。p是头节点,说明没有人和他竞争,就再获取一次。失败了。是不是应该park住呢?修改其前驱节点的waitStatus为-1。表示有责任唤醒其后...原创 2020-04-22 11:26:36 · 130 阅读 · 0 评论 -
heima并发22---并发工具包(1)---aqs--235-237
是一个抽象的基于队列的同步器。---235------236---原创 2020-04-22 09:12:16 · 156 阅读 · 0 评论 -
heima并发21---并发工具(6)---fork/join---232-234
fork-join主要是cpu密集型的,cpu核心数和线程数是一样的。代码:原创 2020-04-22 00:19:36 · 95 阅读 · 0 评论 -
heima并发20---并发工具(5)---任务调度现线程池--224-231
我们看下timer的基本使用:代码:第一种情况:如果没有sleep的话,两个timer都是一秒后执行的。第二种情况:一个任务执行的时间长,影响其他的任务执行时间的。第三种情况:第一个任务报异常---224---第一个测试:第一个任务延时2秒但是不会让第二个任务延时执行的。因为线程池设置为2,如果线程池设置是1的话还是会串行的,要2秒之...原创 2020-04-20 01:06:06 · 126 阅读 · 0 评论 -
heima并发19---并发工具(4)---线程池设计模式--220-223
---220---饥饿:线程不足,比如固定大小的线程池。问题代码:此处的3为1。测试:当只有一个线程池fix类型2个核心线程的时候,也是只有一个客人的时候:是可以的。当两个客人的时候:此时就是都处理点餐了,没人做饭了。---221---解决办法:1.增加线程2.不同的任务类型使用不同的线程池,防止两个任务互相依赖死等。---222-...原创 2020-04-19 21:57:38 · 135 阅读 · 0 评论 -
heima并发18---并发工具(3)---线程池方法---215-219
代码演示:Callable和Runnable相比就是多了返回的记录。submit方法是提交给线程池中的线程来调用的。代码:Future是阻塞的。future.get是阻塞主线程的。单方法的接口都可以用lambda表达式简化的。---215---invoke和invokeAll在这里面去调用下。---216---invokeAny:有一个线...原创 2020-04-19 16:50:36 · 114 阅读 · 0 评论 -
heima并发17---并发工具(2)---线程池种类前三个基本的--209-214
int是4个字节32位。带正负号的。shutdown是比较温和的,就是正在执行的和阻塞队列的都不会停止的。stop:暴力的停止,全部interrupt。tidying:terminated:为什么用一个整数而不是两个整数呢?---209---我们看下构造方法:参数:核心线程数 最大线程数 生存时间 时间单位 阻塞队列(放任务的) 线程工厂...原创 2020-04-19 12:07:17 · 113 阅读 · 0 评论 -
heima并发16---并发工具(1)--自定义-线程池--199-208
---199---线程池:线程问题:多 上下文切换问题。线程池的组件:Blocking Queue:生产者消费者平衡速率差异的。消费者线程在等待队列里面等待。任务太多出来的任务放在阻塞队列。---我们自定义一下阻塞队列:容量确定的话就用ArrayQueue:https://blog.csdn.net/love667767/article/details/...原创 2020-04-18 18:15:41 · 207 阅读 · 0 评论 -
heima并发15---不可变相关--188-198
可变类不是线程安全得。DateTimeFormater:https://blog.csdn.net/megustas_jjc代码:这个不是线程安全的。因为内部的成员变量是可变的。---188---解决办法1:加锁。解决办法2: 不可变对象。---189---不可变类设计:---190---final修饰数组的时候仅仅是保证引用不能改变...原创 2020-04-17 16:44:00 · 105 阅读 · 0 评论 -
heima并发14---unsafe--184-187
cas还有park和unpark都是调用的unsafde的方法。unsafe不能直接调用要通过反射来获得的。可以看到是私有的单例的,要通过反射来获取的。代码:------------------184------------------------用unsafe去线程安全的修改成员变量。底层是通过属性的内存的偏移量来定位的。id和name相对于Teacher...原创 2020-04-17 14:57:15 · 109 阅读 · 0 评论 -
heima并发13---LongAddr--177-183
原子累加器。原子整数也可以做累加的。性能比较,代码代码:package cn.itcast.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicLong;import java.util.concurrent.atomic.Lon...原创 2020-04-17 00:36:25 · 189 阅读 · 0 评论 -
heima并发12---原子数组--173-176
原子数组---173---------174--没看---176---原创 2020-04-16 22:53:13 · 126 阅读 · 0 评论 -
heima并发11---原子整数和原子引用---166-172
代码:package cn.itcast.test;import java.util.concurrent.atomic.AtomicInteger;import java.util.function.IntUnaryOperator;public class Test34 { public static void main(String[] args) { ...原创 2020-04-16 19:28:47 · 157 阅读 · 0 评论 -
heima并发10---cas--158-165
------------158------------------原创 2020-04-13 21:23:01 · 87 阅读 · 0 评论 -
heima并发7---reentrantLock预习--120-127
锁池(对象头),等待池(waitset)。-------------------------------------120--------------------------------------------测试可重入:代码:测试可以重入的:注意a调用b,此时a锁,b也锁,是可重入的锁。就是我在一个加锁的方法里面调用另一个加锁的方法,是可以调用的。----...原创 2020-04-13 21:20:09 · 129 阅读 · 0 评论 -
heima并发5---park和unpark---108-109
park和unpark代码package cn.itcast.n4;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.LockSupport;import static cn.itcast.n2.util.Sleeper.sleep;@Slf4j(topic = "c.TestParkUn...原创 2020-04-13 19:32:25 · 121 阅读 · 0 评论