并发编程
锋少的博客
一个茁壮成长的程序猿
展开
-
并发编程的基础知识
关于进程与线程 为什么会出现进程? 现在的计算机可以用来做很多的事情,而早期的计算机原本是用来做数学运算的。用户输入什么指令,计算机就做什么操作,当用户在思考或者输入数据的过程中,计算机可能什么都不会做,这样的效率非常低。 能不能把指令先写好,存在计算机中,让计算机自己去读取执行呢?于是批处理操作系统就诞生了。人们先把程序的指令写好交给计算机...原创 2019-06-01 17:19:33 · 1409 阅读 · 0 评论 -
原子类与CAS
JUC包下的原子类是CAS算法运用的典范1.引入(线程安全的累加器)我们来看平常的一个累加器public class AutomicDemo { private static AtomicInteger count = new AtomicInteger(); public void add() { for (int i = 0; i <...原创 2019-06-07 20:40:11 · 869 阅读 · 0 评论 -
Java中的线程池
1.线程池的好处 上述图片来自阿里的Java开发手册。一般在编程中有用到池的,基本上显而易见的好处就是减少频繁创建而导致的系统开销,比如数据库连接池,线程池的原理也是类似,也是为了解决频繁创建线程而造成的系统开销过大的问题。因为大部分时候可能创建线程浪费的时间何资源比处理程序都多。2.线程池的执行过程 主要的判断分支点在于1.是否超过corePoolSize(核...原创 2019-07-29 14:10:00 · 377 阅读 · 0 评论 -
一些Java并发编程的问题记录
1.Synchronized的实现原理 同步代码块使用monitorenter和monitorexit两个指令实现,可以把执行monitorenter指令理解为加锁,执行monitorexit理解为释放锁。 每个对象维护着一个记录着被锁次数的计数器。未被锁定的对象的该计数器为0,当一个线程获得锁(执monitorenter)后,该计数器自增变为 1 ,当同一个线程再次获得该对象的锁...原创 2019-08-12 14:19:25 · 122 阅读 · 0 评论