★★·········【Java并发编程】
文章平均质量分 70
Ryze丶
不积跬步无以至千里
展开
-
Docker容器中使用ForkJoinPool或者parallelStream 卡死的问题
问题来源及解决办法:https://www.oracle.com/java/technologies/javase/10-relnote-issues.html#JDK-8146115https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpoolhttps://stackoverflow.com/questions/59661653/jvm-in-container-calculates-processors-wronglyhttps:/原创 2020-09-28 21:40:27 · 852 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到!参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedreference....转载 2019-04-14 10:40:06 · 120 阅读 · 0 评论 -
ThreadLocal缺陷以及处理
分析过ThreadLocal源码源码的人都知道,ThreadLocal的设计的确巧妙,但是它也有一个缺陷:可能会引起内存泄漏;ThreadLocalMap中key维护着一个weakReference,它在下次GC之前会被清理,如果Value仍然保持着外部的强引用,该ThreadLocal没有再进行set,get或者remove操作,时间长了就可能导致OutOfMemoryError .lucen...原创 2018-10-09 23:07:26 · 4090 阅读 · 0 评论 -
[书]java并发编程的艺术笔记
第1章 并发编程的挑战1.多线程一定比单线程快? 不一定,如同在同时阅读两本书时的来回切换切换是会影响读书效率的,同样上下文切换也会影响多线程的执行速度. 并发执行的速度会比串行慢:这是因为线程有创建和上下文切换的开销.2.如何减少上下文切换 减少上下文切换的方法有无锁并发编程(避免使用锁)、CAS算法(Java的Atomic包使用CAS算法来更新数据,而不需要加锁)、使用最少线程...原创 2018-08-23 23:29:32 · 560 阅读 · 0 评论 -
一个死锁的例子
死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。 非剥夺条件(No pre-emption):已经分配...原创 2018-07-31 22:29:15 · 1155 阅读 · 0 评论 -
[转]Java中的多线程你只要看这一篇就够了
引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。 1、进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对...转载 2018-07-15 16:56:44 · 1384 阅读 · 0 评论 -
[并发]synchronized与volatile
1 可见性介绍1.1 可见性可见性:一个线程对共享变量值得修改,能够及时的被其他线程看到. 共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量.1.2 java内存模型(JMM)java内存模型(Java Memory Model)描述了java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存读取变量这样的...原创 2018-07-23 22:11:05 · 156 阅读 · 0 评论