并发编程
吾道孤矣
这个作者很懒,什么都没留下…
展开
-
ThreadLocal用于传递参数及优势
Threadlocal叫做线程本地变量,也叫线程本地存储,其作用是将参数储存在线程中,然后在该线程运行的任何阶段都能从线程中获取,简单的说,就是起到一个参数传递的作用。 举个具体运用的例子:一般用户在登陆系统之后,我们都会把一个用户的标识信息作为参数放入cookie、或session、或token中,返回给浏览器,然后在以后的请求中,就会带上这个标识信息。当在后续的请...原创 2020-04-08 14:44:09 · 3888 阅读 · 0 评论 -
volatile、synchronized、static多线程运用(个人理解)
java主要有两套内存模型,一套是JVM对Java内存模型的实现、另一套是硬件内存架构。其中,Java内存模型由“线程栈区”和“堆区”组成,是虚拟存在的,而硬件内存架构由“CPU寄存器(储存器)”、“CPU缓存”、“主存”三者构成,是真实存在的。 这两套模型的关系如下(左边是Java内存模型、右边是硬件内存模型): 可以发现,两套模型的对应关系相当复杂,...原创 2018-03-30 16:48:19 · 325 阅读 · 0 评论 -
synchronized不能锁住Integer
今天写了一行代码,觉得完事大吉,结果在真正执行的时候发现无法实现对qId的串行操作,当时就懵逼了。原始代码:public JsonResponse synVerifying(Integer qId, BigDecimal score, FanyaUserDetail user, Map<String, String> map) { //相同的qId会排序 synchro...原创 2018-03-23 17:16:12 · 2464 阅读 · 0 评论 -
ThreadLoacl和线程同步(synchronized)的运用场景(小结)
目前常用的MVC框架是SpringMVC,该框架默认单例,它就采用了ThreadLoacl来实现。 可见ThreadLoacl适用于单例模式中来保证线程安全,但是其只能保证不同的线程访问各自数据时的线程安全。不能保证访问公共数据的线程安全,例如多个线程同时访问数据库中同一张表中的同一条记录。也不能保证访问自己数据的线程安全,例如因为网络延迟造成的连续点击事件,这个一般通过...原创 2018-05-18 09:14:22 · 330 阅读 · 0 评论 -
WebAsyncTask直接释放处理线程连接,提高服务器吞吐量
两个基本概念: 处理线程:处理线程 属于 web 服务器线程,负责 处理用户请求,采用 线程池 管理。 异步线程:异步线程 属于 用户自定义的线程,可采用 线程池管理。 工具类:public class WebAsyncUtils { Logger logger = LoggerFactory.getLogger(WebAsyncUtils.class); ...转载 2018-12-12 19:53:02 · 1463 阅读 · 0 评论