Wesley13 Wesley13
3年前
java并发编程(一)
Java并发编程:volatile关键字解析volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volat
Wesley13 Wesley13
3年前
Java并发系列5
今天讲一个倒计时器工具,叫CountDownLatch。需要这个工具的场景大概有:当所有的小任务都完成之后,再启动大任务。先看代码:publicclassCountDownLatchDemo{staticfinalCountDownLatchLATCHnewCountDownLatch(10);
Wesley13 Wesley13
3年前
Java并发(四):happens
happensbefore一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happensbefore关系happenbefore原则是JMM中非常重要的原则,它是判断数据是否存在竞争、线程是否安全的主要依据,保证了多线程环境下的可见性。happensbefore原则定义:1\.如果一个操作happensb
Wesley13 Wesley13
3年前
Java并发包小结
1、Lock  Lock功能对应关键字synchrozied功能,lock和unlock方法用于加锁和释放锁。等待锁的线程加入到等待链表中,同时阻塞线程,锁释放时,从等待链表中取出等待的线程执行,取等待的线程分公平与非公平两种方式,公平方式取第一个等待的线程,非公平方式当前正在获取锁的线程可能立刻执行,而不用加入到等待队列中,排队执行。2、Con
Stella981 Stella981
3年前
Redis高并发7
1、主从架构的核心原理当启动一个slavenode的时候,它会发送一个PSYNC命令给masternode如果这是slavenode重新连接masternode,那么masternode仅仅会复制给slave部分缺少的数据;否则如果是slavenode第一次连接masternode,那么会触发一次fullre
Wesley13 Wesley13
3年前
Java并发编程1
1 为什么要使用多线程使用多线程的原因主要有以下几点:(1)更有效的运用多核心处理器一个线程在一个时刻只能运行在一个处理器核心上,所以单线程程序在同一时刻只能使用一个处理器核心,而多个线程在同一时刻可以使用多个处理器核心,显然能更加有效的运用多核心处理器。(2)更快的响应时间一些较为复杂的代码可以使
Wesley13 Wesley13
3年前
Java并发机制(3)
Java并发编程:volatile关键字解析(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cnblogs.com%2Fdolphin0520%2Fp%2F3920373.html)及内存模型
Wesley13 Wesley13
3年前
Java并发系列7
如果要让线程阻塞,我们在讲线程基础的时候已经分析过了。如果要让线程暂停呢,不是blocked,而是waiting,这时候有什么办法?Thread类有一个弃用的方法suspend()是线程暂停的意思,他被弃用的原因是线程挂起的时候并不会释放持有的锁资源,而且suspend()挂起的线程状态依然是runnable,这也是不合理的。那么有没有一种简单的
Wesley13 Wesley13
3年前
Java并发系列8
前面讲的同步并发工具有些比较简单,所以篇幅也比较短,今天要讲的线程池非常重要,所以会是一个大章哦。已经预见留言区如下:“太长不看...”“看到ThreadPoolExecutor构造已睡着”“精力饱满而来,昏昏欲睡而去...”学习的确需要投入精力,尤其涉及到一些细节,对别人能做到不明觉厉,为何不自己一览山上风景呢?一、何为
Wesley13 Wesley13
3年前
Java并发编程系列
!(https://oscimg.oschina.net/oscnet/d6e38e4ee3339dd73527c06e6d6bfdfaa04.jpg)目前已经更新完《Java并发编程》,《Docker教程》和《JVM性能优化》,欢迎关注【后端精进之路】,轻松阅读全部文章。<divaligncenter<imgsrc"htt