摘要: volatile变量 当一个变量被定义为volatile类型之后,它具备两个特性: 1、可见性,所有对该变量上作的更改,其他线程可以立刻知道。volatile变量在各工作线程中不存在一致性问题。 2、禁止指令重排序 long、double型变量的特殊规则 Java内存模型要求lock、unlock、 阅读全文
posted @ 2018-08-07 15:27 SheaChen 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 通常Java中涉及金钱相关的计算为了保持精度,会采用BigDecimal来实现,但是BigDecimal中创建BigDecimal类对象的时候,如果使用直接new的话,必须是String类型的参数,否则会导致创建出来的对象不是你想要的,比如new BigDecimal(0.1)得到的结果可能是:0. 阅读全文
posted @ 2018-08-06 17:36 SheaChen 阅读(536) 评论(0) 推荐(0) 编辑
摘要: https://www.oudahe.com/p/java/ 阅读全文
posted @ 2018-08-06 11:29 SheaChen 阅读(90) 评论(0) 推荐(0) 编辑
摘要: Condition Condition是一种广义上的条件队列,它为线程提供了一种更为灵活的等待/通知模式, Condition是一个接口,它的实现ConditionObject是AQS的一个内部类,Conditon必须配合锁一起使用。condition调用await会释放锁,调用condition. 阅读全文
posted @ 2018-08-04 14:13 SheaChen 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 简介 ReentrantLock是一种可重入锁,可以等同于synchronized的使用,但是比synchronized更加的强大、灵活。 一个可重入的排他锁,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。ReentrantLock 阅读全文
posted @ 2018-08-02 23:42 SheaChen 阅读(1234) 评论(0) 推荐(0) 编辑
摘要: 1、与synchronized相比,ReentrantLock提供了更多,更加全面的功能,具备更强的扩展性。例如:时间锁等候,可中断锁等候,锁投票。 2、ReentrantLock还提供了条件Condition,对线程的等待、唤醒操作更加详细和灵活,所以在多个条件变量和高度竞争锁的地方,Reentr 阅读全文
posted @ 2018-08-01 17:41 SheaChen 阅读(771) 评论(0) 推荐(0) 编辑
摘要: 博客地址:https://quanke.gitbooks.io/design pattern java/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99%E4%B9%8B%E8%BF%AA%E7%B1%B 阅读全文
posted @ 2018-07-27 10:30 SheaChen 阅读(684) 评论(0) 推荐(0) 编辑
摘要: 前言 工作原理 如果使用过线程池,细心的同学肯定会注意到,new一个线程池,但是如果不往里面提交任何任务的话,main方法执行完之后程序会退出,但是如果向线程池中提交了任务的话,main方法执行完毕之后程序是不会自动退出的,是什么原理,或者说是什么原因导致任务提交到线程池之后任务执行完程序无法自动退 阅读全文
posted @ 2018-07-18 21:29 SheaChen 阅读(1181) 评论(0) 推荐(0) 编辑
摘要: 支付系统整体架构 https://juejin.im/entry/58fd731b570c350058e5167f 对支付宝、京东、去哪儿、美团的大公司支付架构做了一个加单介绍 阅读全文
posted @ 2018-07-16 11:28 SheaChen 阅读(232) 评论(0) 推荐(0) 编辑
摘要: shell 脚本 !/bin/bash 设置jdk环境 export JAVA_HOME=/usr/java/jdk1.8.0_45 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLA 阅读全文
posted @ 2018-07-02 19:27 SheaChen 阅读(797) 评论(0) 推荐(0) 编辑