![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
孤竹彧
一个想进步,又控制不住自己的小码农
展开
-
缓存和数据库一致性问题解决方案
缓存是减轻数据库压力的一种解决办法,不过要做到缓存和数据库数据一致性。给缓存设置过期时间,是保证数据最终一致性的办法,我们也要尽量保证使用时候的一致性。一般不使用先更新缓存再更新数据库的方式,如果缓存更新成功而数据库更新失败,那肯定不行那基本就还剩如下三种1)先更新数据库,再更新缓存2)先删除缓存,再更新数据库3)先更新数据库,再删除缓存依次分析方法一:先更新数据库,再更新缓存这种方法其实还有很多项目在这么用,不过是最糟糕的选项。1、A更新数据库数据为a2、B更新数据库数据为b3、B原创 2021-03-02 18:30:19 · 274 阅读 · 1 评论 -
ThreadLocal的自我测试用例
以下是test的内容,想要每个线程一秒钟后拿到的num和之前放进去的一致,显然使用静态的int熟悉不可以public class TestMain { public static void main(String[] args) throws InterruptedException { Thread[] threads = new Thread[10]; for (int i = 0; i < 10; i++) { threads[i原创 2021-01-14 15:44:26 · 159 阅读 · 0 评论 -
单例模式如何确保线程安全
懒汉模式为什么是线程安全的?这个大家基本都能看懂,加了锁了嘛!饿汉模式为什么是安全的?因为静态对象是在类加载中就初始化了。那为什么类加载过程是线程安全的呢?之前没有考虑过,现在知道了,因为loadClass对象加了锁了所以说饿汉模式是不加锁的,是不准确的有答案说,使用ThreadLocal可以做到不加锁就做到线程安全的单例模式,但是这样的单例得出的只能保证线程内部的单例,多线程之间的数据不是单例的当然,饿汉模式懒汉模式以及静态内部类模式就真的能做到单例?也不是,使用反射或者序列化的方式,就可以原创 2020-12-08 17:07:54 · 1615 阅读 · 1 评论 -
ForkJoinTask的小测试
其实,我到现在都没搞懂ForkJoinTask是干嘛用的,只是发现,好像可以把复杂的事情进行拆分。就是子任务执行时候,是一起执行的。父任务等到子任务执行完再执行比如:我想计算1加到100的值,我可以拆成很小的模块进行计算。(我只会进行十个数字的加法,多了不会)public class Test { public static void main(String[] args) { ...原创 2020-03-11 22:27:21 · 125 阅读 · 0 评论