上一页 1 ··· 4 5 6 7 8 9 10 下一页

2017年1月4日

架构师养成记--14.重入锁ReentrantLock 和 读写锁 ReentrantReadWriteLock

摘要: ReentrantLock 有嗅探锁定和多路分支等功能,其实就是synchronized,wait,notify的升级。 this锁定当前对象不方便,于是就有了用new Object()来作为锁的解决方案,后面jdk干脆就提供了一个Lock类。 伪代码: Lock lock = new Reentr 阅读全文

posted @ 2017-01-04 09:23 司广孟 阅读(776) 评论(0) 推荐(0) 编辑

架构师养成记--13.代码层面用信号量做限流

摘要: 先抛出一个问题,如何解决互联网项目中的高并发问题? 1.网络层 2.服务器层面,常用的有nginx分流,负载均衡,负载权重。这些就是为了减轻单台服务器的压力。 3.业务划分 这才是高并发解决方案的重点,系统应该被细粒度地分割成多个模块,如天猫的购物车系统、结算系统等,在具体划分出来的系统上做负载均衡 阅读全文

posted @ 2017-01-04 00:26 司广孟 阅读(1084) 评论(0) 推荐(0) 编辑

2017年1月3日

架构师养成记--12.Concurrent工具类CyclicBarrier和CountDownLatch

摘要: java.util.concurrent.CyclicBarrier 一组线程共同等待,直到达到一个公共屏障点。 举个栗子,百米赛跑中,所有运动员都要等其他运动员都准备好后才能一起跑(假如没有发令员)。 执行结果: java.util.Concurrent.CountDownLatch t1线程要等 阅读全文

posted @ 2017-01-03 09:12 司广孟 阅读(494) 评论(0) 推荐(0) 编辑

2016年12月30日

架构师养成记--11.Executor概述

摘要: 常用方法 Executors.newFiexdPool(int nThreads);固定线程数量的线程池; Executors.newSingleThreadExecutor();单个线程的线程池; Executors.newCachedThreadPool();根据实际情况调整线程个数的线程池;每 阅读全文

posted @ 2016-12-30 12:43 司广孟 阅读(486) 评论(0) 推荐(0) 编辑

2016年12月29日

架构师养成记--10.master-worker模式

摘要: master-worker模式是一种并行计算模式,分为master进程和worker进程两个部分,master是担任总管角色,worker才是执行具体任务的地方。 总体流程应该是这样的: 具体一点,代码实现流程应该是这样的: client: Master: Worker: Task: 阅读全文

posted @ 2016-12-29 12:49 司广孟 阅读(1018) 评论(0) 推荐(0) 编辑

2016年12月26日

架构师养成记--9.future模式讲解

摘要: 什么是future模式呢?解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成。假如要调用5个存储过程,每个存储过程要执行5分钟左右,那么这5个加起来就要25分钟。现在用户要求优化,把 阅读全文

posted @ 2016-12-26 13:04 司广孟 阅读(2850) 评论(0) 推荐(0) 编辑

2016年12月16日

架构师养成记--8.Queue

摘要: 一、ConcurrentLinkedQueue 是一个适合在高并发场景下,无锁,无界的,先进先出原则。不允许为null值,add()、offer()加入元素,这两个方法没区别;poll()、peek()取头元素节点,pull会删除,peek不会。 有一点要注意,轮询条件不能用queue.size() 阅读全文

posted @ 2016-12-16 12:44 司广孟 阅读(505) 评论(0) 推荐(0) 编辑

2016年12月15日

架构师养成记--7.同步类容器和并发类容器

摘要: 一、同步类容器 同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历完容器中的所有元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发的修改容器时,可能会表现出意外的行为,最经典的便是Concurrent 阅读全文

posted @ 2016-12-15 22:44 司广孟 阅读(530) 评论(0) 推荐(0) 编辑

2016年12月8日

架构师养成记--6.单例和多线程、ThreadLocal

摘要: 一、ThreadLocal 使用wait/notify方式实现的线程安全,性能将受到很大影响。解决方案是用空间换时间,不用锁也能实现线程安全。 来看一个小例子,在线程内的set、get就是threadLocal 1 public class ConnThreadLocal { 2 3 public 阅读全文

posted @ 2016-12-08 23:30 司广孟 阅读(1133) 评论(1) 推荐(0) 编辑

2016年12月5日

架构师养成记--5.线程之间的通信

摘要: 用wait和notify来实现线程之间的通信,这两个方法是object方法,这两个方法必须要配合synchronized使用。wait方法释放锁,notify不释放锁。 原始线程通信方式 1 import java.util.ArrayList; 2 import java.util.List; 3 阅读全文

posted @ 2016-12-05 23:45 司广孟 阅读(508) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 下一页

导航