多线程
文章平均质量分 94
dongcheng_2015
这个作者很懒,什么都没留下…
展开
-
synchronized同步机制——如果你愿意一层一层剥开我的心
前言synchronized,是解决并发情况下数据同步访问问题的一把利刃。那么synchronized的底层原理是什么呢?下面我们来一层一层剥开它的心,就像剥洋葱一样,看个究竟。Synchronized的使用场景synchronized关键字可以作用于方法或者代码块,最主要有以下几种使用方式,如图:接下来,我们先剥开synchronized的第一层,反编译其作用的代码块以及方法。synchronized作用于代码块public class SynchronizedTest {转载 2021-05-27 12:46:29 · 474 阅读 · 0 评论 -
ThreadLocal的内存泄露?什么原因?如何避免?
本文源于转载:ThreadLocal的内存泄露?什么原因?如何避免?另一篇讲的挺好的文章:ThreadLocal原理及内存泄露预防前言在分析ThreadLocal导致的内存泄露前,需要普及了解一下内存泄露、强引用与弱引用以及GC回收机制,这样才能更好的分析为什么ThreadLocal会导致内存泄露呢?更重要的是知道该如何避免这样情况发生,增强系统的健壮性。内存泄露内存泄露为程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多转载 2021-05-20 11:22:40 · 200 阅读 · 0 评论 -
如何保证缓存(redis)与数据库(MySQL)的一致性
本文源自转载:原文链接。简介:对于热点数据(经常被查询,但不经常被修改的数据),我们可以将其放入redis缓存中,以增加查询效率,但需要保证从redis中读取的数据与数据库中存储的数据最终是一致的。本文基于“孤独烟”与“58沈剑”两位的文章,针对一致性的问题进行了汇总总结。一、前言客户端对数据库中的数据主要有两类操作,读(select)与写(DML)。针对放入redis中缓存的热点数据,当客户端想读取的数据在缓存中就直接返回数据,即命中缓存(cache hit),当读取的数据不在缓存内,就需要.转载 2021-05-15 16:25:30 · 1530 阅读 · 0 评论 -
java中线程的状态,thread.start()启动之后线程进入什么状态?
Java中的线程的生命周期大体可分为5种状态。1.新建(NEW):新创建了一个线程对象。2.可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3.运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。4.阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出...转载 2021-05-15 14:11:44 · 5711 阅读 · 0 评论