
Java并发编程
文章平均质量分 84
rickey17
这个作者很懒,什么都没留下…
展开
-
Java并发编程(一)——挑战
多线程一定会让程序运行更快吗? 创建线程的问题,上下文切换的问题,死锁的问题,硬件和软件资源的问题上下文切换即使单核的CPU也是支持多线程执行代码的,CPU给每个线程分配时间片来实现这个机制。 时间片是CPU分配给各个线程的时间,非常短,所以CPU通过不停的切换线程执行,时间片一般是几十毫秒。 CPU通过时间片分配算法来执行任务使用Lmbench3可以测量上下文切换的时长使用vmstat可原创 2017-08-13 15:14:58 · 444 阅读 · 0 评论 -
Java并发编程(二)——Java并发底层实现原理
Java代码会被编译后变成Java字节码,字节码会被类加载器加载到JVM中,JVM执行字节码,最终转化成汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。volatile在多线程并发编程中,synchronized和volatile都很重要,volatile是轻量级的synchronized,它在多处理器的开发中,保证了共享变量的可见性。*可见性指一个线程修改这个共原创 2017-08-13 17:31:36 · 355 阅读 · 0 评论 -
Java并发编程(三)——原子操作
概念不可被中断的一个或一系列操作术语定义 术语名称 英文 解释 缓存行 cache line 缓存的最小操作单位 比较并交换 Compare And Swap CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较旧值有没有变化,才交换成新值,发生了变化则不交换 CPU流水线 CPU pipeline CPU流水线的工作方式就原创 2017-08-13 18:31:29 · 392 阅读 · 0 评论 -
术语,概念理解——并发与并行,异步与同步,非阻塞与阻塞
并发与并行并发和并行是相关的概念,但存在细微差别。并发意味着两个或多个任务正在取得进展,即使它们可能没有同时执行。例如通过时间切片来实现,其中任务的各部分被顺序执行并且与其他任务的部分混合。另一方面,当执行可以真正同时发生时,并行性就出现了。异步与同步如果调用方在方法返回值或抛出异常之前无法继续进行,则方法调用被视为同步。另一方面,异步调用允许调用者在有限数量的步骤之后前进,并且可以通过一些...原创 2019-01-23 12:03:09 · 221 阅读 · 0 评论 -
TIME_WAIT过多问题
网络连接状态查看网络连接状态netstat -nat | grep -iw “8080”或者计数netstat -nat | grep -iw “8080” | wc -l或者分组统计netstat -ant | grep 8080 | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}’网络连接状态说明为什么有ti...原创 2019-02-26 10:47:38 · 1079 阅读 · 0 评论