#多线程
凯凯兹
code..
展开
-
Java并发编程-锁的粒度与死锁
锁的粒度今天拿取款来说说事儿假设我们有Acount用户这个实体,有两个字段,一个用户名,一个余额,都是资源。class Acount{ private Integer balance; private String name; public void updateName(String name){ this.name = name; } public void withdraw(Integer amt){ if(this.balance > amt){ this.bal原创 2020-12-10 13:50:19 · 324 阅读 · 0 评论 -
Java并发编程-内存模型
Java内存模型如何解决可见性和有序性问题一. 什么是Java内存模型?简述:Java的内存模型主要解决多处理器架构下,可见性、有序性的相关问题。现在我们的计算机处理器架构都是对称多处理器,每个处理器都有自己的寄存器、缓存,多个处理器可以同时执行同一进程下的多个线程,称为处理器的乱序执行。在Java程序中,不同线程可能访问同一个共享变量,任由处理器或者编译器对这些访问进行优化,会有很多问题出现,因此引入内存模型。二.三个基本原则原子性、可见性、有序性三.Happens-beforeHap原创 2020-12-09 14:25:04 · 105 阅读 · 0 评论 -
Java并发编程-并发问题从哪儿来
并发问题的根本围绕着原子性、有序性、可见性,会出现各种的并发问题,要理解透彻这三种特性,才能有效的定位出现的并发问题(并发问题往往是综合性的)可见性例如:不同的CPU缓存造成的可见性问题假设一个场景,调用add方法,count+=1执行1w次,在代码编译后,CPU指令为如下3步骤1、将count读到cpu2、进行+1操作3、count写回内存中(有可能写入cpu缓存,但cpu缓存再写入内存时间不可控)现在线程A、B同时执行add方法,执行结果理想为count=2w,但实际结果往往是0-2w之原创 2020-12-08 13:22:25 · 147 阅读 · 0 评论 -
震惊!Java并发编程实战,快来看看(仅供学习研究)
本文主要用于学习交流Java并发编程,锤炼Java多线程使用的技能点- 线程池- 线程资源共享- 多线程读写问题使用IP代理方式,从代理商获取IP,每天稳定增加访问量2w(全部博客总量,而非单篇)左右。原创 2020-06-03 21:39:07 · 10073 阅读 · 1 评论