高并发编程
文章平均质量分 68
「已注销」
君子以自强不息
展开
-
Java并发编程:线程安全和ThreadLocal
线程安全的概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。线程安全说的可能比较抽象,下面就以一个简单的例子来看看什么是线程安全问题。public class MyThread implements Runnable { private int number = 5; @Override publi...原创 2018-10-19 00:39:09 · 2933 阅读 · 3 评论 -
Java并发编程:同步类容器的问题
同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作,在复合操作,如:迭代、跳转已经条件运算中,可能会表现出意外的行为,最经典的便是ConcurrentModificationException,原因是当容器迭代的过程中,被并发的修改了内容,这是由于早起迭代器设计的时候并没有考虑并发修改的原因。下面来场景复现:public class UseSyncCollection { ...原创 2018-10-16 21:43:07 · 513 阅读 · 0 评论 -
Java并发编程:初识并发容器类
JDK5.0以后提供了多种并发类容器来替代同步容器类从而改善性能。同步类容器状态都是串行化的。他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。ConcurrentMap接口ConcurrentMap接口有两个重要的实现类:ConcurentHashMap、ConcurrentSkipListMap(支持并发排序功能)。ConcurrentHashMap...原创 2018-10-17 00:00:12 · 509 阅读 · 0 评论 -
Java并发编程:并发Queue接口
ddd原创 2018-10-16 00:03:34 · 527 阅读 · 0 评论 -
Java并发编程:Volatile关键字和Atomic类
在接触并发编程之前我对volatile关键字是没有什么映像的,这个关键字解决了什么问题呢?让我们先来看一个示例:public class UseVolatitle extends Thread { private boolean isrunning = true; public void setIsrunning(boolean isrunning) { thi...原创 2018-10-27 00:51:27 · 2816 阅读 · 2 评论 -
Java并发编程:自己动手写一把可重入锁
线程不安全例子public class Sequence { private int value; public void increament(int number) { int newValue = value + number; try { Thread.sleep((long) (Math.random() *...原创 2018-11-08 02:51:18 · 6359 阅读 · 24 评论 -
Java并发编程:用AQS写一把可重入锁
测试类/** * MyAqsLock的测试类 */public class Main { private int value; private Lock lock = new MyAqsLock(); private Lock lock1 = new ReentrantLock(); public int increment() { ...原创 2018-11-12 02:32:37 · 6347 阅读 · 12 评论 -
Java并发编程:线程池的使用
一提到线程池,我们都容易想到高并发各种脑补场景,其实高并发是一个抽象的概念,要实现高并发并不仅仅是一个Java线程集合类,或者Java基础层面就能搞定的事情。这其中涉及到方方面面,从前端到后端,到支持高并发的中间组件,最后到数据存储,持久化层面等等都需要对高并发设计和考量。因此,前方的道路是漫长且艰难的,只有让我们对技术保持着敬畏之心,对学习保持热情态度,对编程保持热爱之情,一点一滴的学习和沉淀这些知识和技能,终有一天你会把这些东西由点到线,由线到面汇聚属于自己的知识脉络,形成自己的知识体系,蜕变成当年青春原创 2018-11-18 00:58:31 · 2696 阅读 · 4 评论