![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程并发学习
HelloWorld_Joe
这个作者很懒,什么都没留下…
展开
-
多线程并发学习笔记(1)
main(非守护线程)和jvm其他的守护线程(守护线程后续会介绍)线程生命周期:blocked状态线程获取锁或结束睡眠变为runnable状态,然后获取到cpu时间片变为running状态。running状态线程也会因为cpu时间片分配切换线程使其变为runnable,然后再获取到时间片变为running(这些进程“看起来像”同时运行,实则是轮番运行,由于时间片通常很短(...原创 2019-08-24 12:03:59 · 122 阅读 · 0 评论 -
多线程并发学习笔记(3)
thread.join();等待当前线程结束才会去执行主线程thread.join(100);等待当前线程100毫秒才会去执行主线程thread.join(100,10);等待当前线程100毫秒又100纳秒才会去执行主线程关于interrupt中断线程:1. sleep() & interrupt() 线程A正在使用sleep()暂停着: Thread.sleep...原创 2019-08-26 20:09:57 · 128 阅读 · 0 评论 -
多线程并发学习笔记(4)
wait() notify() notifyAll()在java中,线程间的通信可以使用wait、notify、notifyAll来进行控制。从名字就可以看出来这3个方法都是跟多线程相关的,但是可能让你感到吃惊的是:这3个方法并不是Thread类或者是Runnable接口的方法,而是Object类的3个本地方法。其实要理解这一点也并不难,调用一个Object的wait与notify/n...原创 2019-08-29 10:56:57 · 102 阅读 · 0 评论 -
多线程并发学习笔记(5)
关于volatile关键字引出的问题首先我们来看看简单内存模型运行示例图:cpu不会直接从内存中拿取数据,而是经过一个缓存这也导致T1线程如果只读(ROT) cache1不更新,后当T2(RAT,刷新cache2,导致两边cache数据不一致(java做了优化,判断为只读,不更新cache1),这就叫cpu缓存不一致。解决方法:1.给数据总线加锁(数据总线,地址...原创 2019-08-29 16:49:32 · 125 阅读 · 0 评论 -
多线程并发学习笔记(2)
创建线程的方式2:stackSize:默认为0(表示忽略该参数)代表该线程的stack大小,能增加虚拟机栈帧深度原创 2019-08-30 00:10:57 · 116 阅读 · 0 评论 -
多线程并发学习笔记(6)
并发编程中三个比较重要的概念1.原子性2.可见性(主存缓存可见性)3.有序性(顺序性)【java重排序只要求最终一致性,它会影响多线程编程】volatile:这里不能保证并发原子性,两个线程操作可能导致输出值重复:我们可以将INIT_VALUE的值变化过程进行分解三个步骤有一个步骤放弃cpu执行权,就导致原子性得不到保证,只能加...原创 2019-08-29 18:05:32 · 131 阅读 · 0 评论 -
分布式锁
分布式锁要求:实现分布式锁的方式:总结以上三种方案:重点讲zookeeper锁:zk的数据结构与watcher机制:zk分布式锁思路:给来的第一个请求创建一个临时顺序节点,注册watcher,执行完毕,删除节点,通知下一个请求...原创 2019-09-03 00:24:41 · 159 阅读 · 0 评论 -
线程并发学习笔记(7)future设计模式
想象成蛋糕店买蛋糕:买蛋糕老板开始做蛋糕(futureService.submit()),但买了蛋糕需要等待老板给你一张凭证(future)但自己继续做蛋糕(call),你拿到凭证你可以去做其他事,做完其它事你再根据凭证找蛋糕店老板要蛋糕,这个时候要是还没做好(done=false),就继续在店里等待(wait),直到老板蛋糕做好通知你(done=true,)...原创 2019-09-03 14:53:17 · 145 阅读 · 0 评论 -
多线程并发学习笔记(8) ThreadLocal
输出:ThreadLocal内部是hashmap实现set get是将当前线程作为key进行存储和取出原创 2019-09-03 16:24:08 · 178 阅读 · 0 评论