
架构师
javashareauthor
分享让知识变得更加得有价值
展开
-
架构师之路第一天
Volatile关键字 用处:Volatile修饰的变量能够在多线程之间可见。也就是可用此关键字实现变量在多线程之间的数据一致性。 在没有Volatile之前,是通过在变量或者方法上面进行加锁实现的。那样的话,效率不高。 案例: public class VolatileTest extends Thread{ private boolean flag = true; public...原创 2018-10-18 16:50:48 · 298 阅读 · 0 评论 -
架构师之路第二天
多线程通信wait与notify 线程通信概念:线程是操作系统中独立的个体,但是这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的方式之一。 使用wait/notify方法实现线程间的通信。(这两个方法都是object的方法,也就是说只要是object的子类,都会提供这样的方法),wait方法是释放锁的,但是notify是不会释放锁的。 如下: import jav...原创 2018-10-18 19:02:28 · 169 阅读 · 0 评论 -
架构师之路第五天
同步类容器 同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作。复合类操作如:迭代、跳转、以及条件运算。这些复合操作在多线程并发的修改容器时,可能会出现意外的行为,最为经典的便是concurrentModificaitionException。原因是当容器迭代的过程中,被并发的修改了内容,这是由于早期迭代器设计的时候并没有考虑到并发修改的问题。 同步...原创 2018-10-25 11:06:12 · 157 阅读 · 0 评论 -
架构师之路第三天
模拟Queue与BlockingQueue BlockingQueue:顾名思义,他就是一个队列,并且支持阻塞的机制,阻塞的放入和得到数据。我们要实现LinkedBlockingQueue下面两个件简单的方法put和take. Put(object):把object加入到BlockingQueue里面,如果BlockingQueue没有空间,则调用此方法的线程被阻塞,直到BlockingQue...原创 2018-10-24 14:12:43 · 142 阅读 · 0 评论 -
架构师之路第四天
单例和多线程 ThreadLocal概念:线程局部变量,是一个多线程间并发访问变量的解决方案。与其synchronized等加锁的方式不同,ThreadLocal完全不提供锁,而使用空间换时间的手段,为每个线程提供变量的独立副本,以保障线程的安全。 从性能上说,ThreadLocal不具备绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全无关的线程安全解决方案,在高并发或者...原创 2018-10-24 14:17:14 · 761 阅读 · 0 评论