线程安全:在堆内存中的数据由于可以被任何线程访问到,在没有限制的情况下存在被意外修改的风险。即堆内存空间在没有保护机制的情况下,对多线程来说是不安全的地方,因为你放进去的数据,可能被别的线程“破坏”。
https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453140919&idx=1&sn=33c1d972afd3476cd78971b372d59d56&scene=21#wechat_redirectSynchronizied
synchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。
1.https://mp.weixin.qq.com/s/ts2Pjz3VpWm50kY-Ru7iTA
2.https://mp.weixin.qq.com/s?__biz=MzUxODAzNDg4NQ==&mid=2247487236&idx=2&sn=1475f0250734b8ec2ee7bda4905b3b05&scene=21#wechat_redirect
3.锁撤销源码https://www.jianshu.com/p/7445361e187f
4.https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453142528&idx=1&sn=34b26e408e1f8adcd8d8257522705171&scene=21#wechat_redirect
5.https://blog.csdn.net/u014590757/article/details/79717549
6.https://www.jianshu.com/p/e62fa839aa41Volatile
1.https://mp.weixin.qq.com/s?__biz=MzUxODAzNDg4NQ==&mid=2247486859&idx=1&sn=a09919f9d1877b4188664294ef4694d7&scene=21#wechat_redirect
2.https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453142004&idx=1&sn=81ccddb6c8b37114c022c4ad50368ecf&scene=21#wechat_redirect
3.https://mp.weixin.qq.com/s/DiEftiV_kTOlR4YmD4pggg
4.https://zhuanlan.zhihu.com/p/133851347ThreadLocal
ThreadLocal的作用主要是做数据隔离,填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的,在多线程环境下,防止自己的变量被其它线程篡改。
1.https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453144870&idx=1&sn=9be678c536d061e0c0d10db1be58dc07&scene=21#wechat_redirect
2.https://mp.weixin.qq.com/s/s6rNuKVTANd20tLv2d3WPg
3.https://snailclimb.gitee.io/javaguide-interview/#/./docs/b-3Java%E5%A4%9A%E7%BA%BF%E7%A8%8B?id=_2318-threadlocal-%e4%ba%86%e8%a7%a3%e4%b9%88%ef%bc%9f线程池
降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
1.https://mp.weixin.qq.com/s?__biz=MzI3ODA0ODkwNA==&mid=2247484094&idx=1&sn=1b80441305d3ccf68eb122c13c89a9d9&chksm=eb5dbb59dc2a324f7ddff35bdfe0ddf8c1b1b559e95f8eada8302516f91fd509e0fa5bc90a25&scene=178&cur_album_id=1690115551995478017#rd
2.https://mp.weixin.qq.com/s?__biz=MzU4NzA3MTc5Mg==&mid=2247484036&idx=1&sn=75e9e93a82a811e9c71b8127cf7ac677&chksm=fdf0eadbca8763cd7ab74757f9472d061c0244d2373a1ea85b1cbc833941441fdb1e91ead5b4&cur_album_id=1657204970858872832&scene=21#wechat_redirect
3.https://snailclimb.gitee.io/javaguide/#/docs/java/multi-thread/2020%E6%9C%80%E6%96%B0Java%E5%B9%B6%E5%8F%91%E8%BF%9B%E9%98%B6%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93 线程池部分AQS
AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器。比如 ReentrantLock,Semaphore, ReentrantReadWriteLock。AQS 核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制 AQS 是用 CLH 队列锁实现的,即将暂时获取不到锁的线程加入到队列中。
1.https://mp.weixin.qq.com/s?__biz=MzU4NzA3MTc5Mg==&mid=2247484035&idx=1&sn=ccaec352e192f1fd40020d9a984e9461&chksm=fdf0eadcca8763ca5c44bd19118fd00e843c163deb40cda444b3fc08430c57760db15eca1ea6&scene=178&cur_album_id=1657204970858872832#rd
2.https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453147094&idx=2&sn=ea2a2daa99b0c94874ced4946cd4f175&scene=21#wechat_redirect
3.CountDownLatch,CyclicBarrier,Semaphore https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453142052&idx=2&sn=9435603082c09a643049299f5b5b68d7&scene=21#wechat_redirect
Java并发
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 【死磕Java并发】—–深入分析synchronized 的实现原理 synchronized 可以保证方法或者代...
- 大家好,我是七哥,今天是2020.10.24,也是我们程序员的节日,在这里祝大家节日快乐。 絮叨一下 今天我们一起...
- 转载自 公众号 <java进阶架构师> 写在前面 前面讲解了并发编程的三大核心问题:原子性、可见性、有序性。文章见...