12 2016 档案

架构师养成记--11.Executor概述
摘要:常用方法 Executors.newFiexdPool(int nThreads);固定线程数量的线程池; Executors.newSingleThreadExecutor();单个线程的线程池; Executors.newCachedThreadPool();根据实际情况调整线程个数的线程池;每 阅读全文

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

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

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

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

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

Spring jdbcTemplate.update oracle 无效的列类型
摘要:jdbcTemplate.update,oracle,无效的列类型 阅读全文

posted @ 2016-12-23 14:50 司广孟 阅读(938) 评论(0) 推荐(0)

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

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

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

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

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

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

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

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

架构师养成记--4.volatile关键字
摘要:volatile修饰的变量可在多个线程间可见。 如下代码,在子线程运行期间主线程修改属性值并不对子线程产生影响,原因是子线程有自己独立的内存空间,其中有主内存中的变量副本。 1 public class RunThread extends Thread{ 2 3 private volatile b 阅读全文

posted @ 2016-12-04 23:43 司广孟 阅读(404) 评论(0) 推荐(0)

架构师养成记--3.synchronized细节问题
摘要:一、synchronized有锁重入的特点,某个线程得到对象的锁后,再次请求此对象可以再次得到改对象的锁。如下示例,在method1中调用method2,在method2中调用method3,而method1、method2和method3都是加了synchronized关键字的。 二、父类和子类的 阅读全文

posted @ 2016-12-01 23:39 司广孟 阅读(834) 评论(0) 推荐(0)

架构师养成记--2脏读
摘要:在我们设计程序的时候要考虑问题的整体,不然很容易出现脏读,看示例 在getValue方法前加synchronized关键字可以避免脏读。否则打印出来的结果是下图那样的: 实际我们先要的结果应该是这样的: 二、数据库的ACID 这里先关注一下ORACLE的一致性读的特性:举个例子,有A和B两个人,A在 阅读全文

posted @ 2016-12-01 22:34 司广孟 阅读(616) 评论(0) 推荐(0)

架构师养成记--1线程基础
摘要:为什么要拿线程开头呢?因为线程太重要了,先不说工作中有多重要,单是和money直接挂钩的开发工程师面试就必问题,要是面试没问相关问题的话,要么是应聘者太菜面试官懒得问了,要么是公司太菜,根本不关心多线程的问题。 一、线程安全问题 当多个线程访问某一个类的时候,这个类都能表现出正确的行为,那么这个类就 阅读全文

posted @ 2016-12-01 00:12 司广孟 阅读(1352) 评论(0) 推荐(0)

导航