JMM和volatile分析 1.JMM:Java Memory Model,java线程内存模型 JMM:它是一个抽象的概念,描述的是线程和内存间的通信,java线程内存模型和CPU缓存模型类似,它是标准化的,用于屏蔽硬件和操作系统对内存访问的差异性。 2.JMM和8大原子操作结合 3.volat ...
分类:
其他好文 时间:
2019-12-14 19:15:38
阅读次数:
347
谈谈多线程 多线程真的是一个很宽的话题,可以聊一串东西线程安全、同步机制、锁、线程运行状态、CAS原子操作、线程池、甚至是JMM、内存可见性等。 而在日常coding中更多地关注是创建线程池提交多个任务执行,分析哪些数据结构被多个线程共享访问,在哪个方法上加锁?如果程序运行一段时间出问题,可能jst ...
分类:
编程语言 时间:
2019-12-14 17:38:52
阅读次数:
103
3. 原子操作与CAS 3.1 原子操作 所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何context switch,也就是切换到另一个线程。 为了实现原子操作,Java中可以通过synchronized关键字将函数或者代码块包围,以实现操作的原子性 ...
分类:
编程语言 时间:
2019-12-11 00:21:57
阅读次数:
103
提到同步,我们一般首先想到的是lock,synchronized,但java中有一套更加轻量级的同步方式即atomic类。java的并发原子包里面提供了很多可以进行原子操作的类,比如: AtomicInteger AtomicBoolean AtomicLong AtomicReference 下面 ...
分类:
其他好文 时间:
2019-12-10 14:51:42
阅读次数:
117
一、事务的概念:事务是由一条或者是多条对数据库操作的SQL语句组成的一个不可分割的单元,只有当事务中的所有的操作都正常成功执行时,整个事务才提交给数据库。 注意:1.事务是一组SQL语句的执行,要么全部执行成功,要么全部执行失败,不能出现部分成功和失败,以保证原子操作 。 2、事务中所有的数据执行成 ...
分类:
其他好文 时间:
2019-12-08 17:50:10
阅读次数:
86
java基础(2) 运算符详解 === 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一;后者是后缀式,先加一,在赋值给a;而且a++,++a并不是原子操作,在当线程环境下并不会出错,当放在多线程下时,就会出现数据错误的问题。 结果: 显然 ...
分类:
编程语言 时间:
2019-12-07 21:02:05
阅读次数:
81
之前的博文也说到了如果多线程对于访问的公共资源操作都是原子操作,那么可以避免竞争条件。关于多线程的竞争可以百度。 1.执行最基本的原子操作 c#提供了一系列供我们使用的原子操作的方法和类型,比如我们的自增和自减操作。 看代码 class Program { private static int _c ...
分类:
编程语言 时间:
2019-12-06 11:42:16
阅读次数:
102
通过sql一步处理 insert into table_name(column1,column2,column3) select 'value1','value2','value3'where not exists(select column from table_name where id=1); ...
分类:
数据库 时间:
2019-12-05 19:03:48
阅读次数:
293
需求 双十二要搞一个一分钱门票抢购的活动。 分析 性能分析,抢购时会发生高并发,如果仅仅依靠Mysql数据库,有可能因为大量的请求频繁访问数据库造成服务器雪崩,所以考虑通过Redis减库存,最终的数据落地到DB中。 在高并发的情况下,还要考虑到超卖的问题,因而打算使用Lua脚本完成原子减的操作。 在 ...
分类:
其他好文 时间:
2019-12-02 18:53:32
阅读次数:
120
参考链接:https://blog.csdn.net/youfuchen/article/details/23179799 ...
分类:
其他好文 时间:
2019-11-29 15:47:20
阅读次数:
74