java
tiandao321
这个作者很懒,什么都没留下…
展开
-
并发编程中的三个概念
1.原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。 试想一下,如果这2个操作不具备原子性,会造成什么样的后果。假如从账户A减去1000元之后,操作突然中止。然后又从B取出了500元,取出50...原创 2018-06-29 13:09:47 · 342 阅读 · 0 评论 -
ThreadPoolExecutor:线程池不允许使用Executors创建
https://blog.csdn.net/qq_21870555/article/details/80923389转载 2019-01-17 14:03:49 · 221 阅读 · 0 评论 -
twitter id 算法
https://segmentfault.com/a/1190000015356486转载的zk实现原创 2019-01-04 16:56:06 · 932 阅读 · 0 评论 -
twitter id生成算法snowflake详解
1 概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。2 结构snowflake生成64的id,...转载 2018-11-08 10:07:25 · 263 阅读 · 0 评论 -
java 连接mysql8.0 以及ssl配置
需要新驱动mysql-connector-java-8.0.11 名称com.mysql.cj.jdbc.Driver 新驱动必须jdk1.8连接串也要改jdbc:mysql://101.132.183.129:3306/znmgr?useUnicode=true&serverTimezone=UTC&useUnicode=true&...原创 2018-09-12 15:39:33 · 5135 阅读 · 1 评论 -
Java常见的线程安全的类
通过synchronized 关键字给方法加上内置锁来实现线程安全 Timer,TimerTask,Vector,Stack,HashTable,StringBuffer 原子类Atomicxxx—包装类的线程安全类 如AtomicLong,AtomicInteger等等 Atomicxxx 是通过Unsafe 类的native方法实现线程安全的 BlockingQue...原创 2018-07-31 11:56:36 · 10008 阅读 · 0 评论 -
乐观锁 悲观锁
1原创 2018-06-29 13:07:20 · 111 阅读 · 0 评论 -
java cas算法实现乐观锁 (Compare and Swap 比较并交换):
在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。 CAS: CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。 CAS 操作中包含三个操作数 —— 需要读写的内存位置(...原创 2018-06-29 13:07:39 · 13014 阅读 · 2 评论 -
java.util.concurrent 浅谈java.util.concurrent包的并发处理
1原创 2018-06-29 13:07:28 · 224 阅读 · 0 评论 -
JAVA垃圾回收机制怎么工作的
java垃圾回收时间不确定 在栈中的对于对象的引用失效 堆中存放的数据不会被回收 只有等待GC回收同时GC回收的是堆区和方法区的内存。堆内存用来存放由new创建的对象和数组。 栈内存(Stack):每个线程私有的。 堆内存(Heap):所有线程公用的。java 语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考...原创 2018-06-29 13:08:07 · 982 阅读 · 0 评论 -
java并发编程volatile
public class Test { public volatile int inc = 0; public void increase() { inc++; } public static void main(String[] args) { final Test test = new Test(); ...原创 2018-06-29 13:09:16 · 119 阅读 · 0 评论