
baidu
miaokezhang
这个作者很懒,什么都没留下…
展开
-
Concurrent.util常用类
CyclicBarrier使用:想象成一个场景:每一个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个没有准备好,大家都等待。多个阻塞线程等待着一个barrier确定。package t18;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarr...转载 2019-03-04 19:36:38 · 169 阅读 · 0 评论 -
同步类容器
同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作。复合操作如:迭代(反复访问元素遍历万容器中的所有元素),跳转(根据制定的顺序找到当前爱你元素的下一个元素),以及条件运算。这些复合操作在多线程并发地修改容器时,可能会表现出意外的行为,最经典的便是ConcurrentModificationException,原因是当容器迭代的过程中,被并发地修改了内容,这是由于早期迭代器设计的时...原创 2019-02-20 16:37:13 · 167 阅读 · 0 评论 -
线程
package second;public class MultiThread { private int num = 0; public synchronized void printNum(String tag){ try{ if(tag.equals("a")){ num = 100; System.out.println("tag a,set num over!");原创 2019-02-18 14:04:21 · 118 阅读 · 0 评论 -
Master-Worker模式
Master-Worker模式是常用的并行计算模式。它的核心思想是系统由李郎类进程协作工作:Master进程和Worker进程。Master负责接收和分配任务,Worker负责处理子任务。当各个Worker子进程处理完成后,会将结果返回给Master,由Master做归纳和总结。其好处是能将一个大任务分解成若干个小任务,并行执行,从而提高系统的吞吐量。Master:import java....转载 2019-02-28 13:06:53 · 745 阅读 · 0 评论 -
脏读
脏读:对于对象的同步和异步的方法,我们在设计自己的程序的时候,一定要考虑问题的整体,不然就会出现数据不一致的错误,很经典的就是脏读(dirtyread)。public class DirtyRead { private String username = "li4"; private String password = "123"; public void setValue(Str...原创 2019-02-18 23:36:33 · 3493 阅读 · 0 评论 -
volatile关键字
volatile概念:volatile关键字的主要作用是使变量在多个线程间可见。public class RunThread { /**volatile**/ private boolean isRunning = true; public void setRunning(boolean isRunning){ this.isRunning = isRunning; } ...原创 2019-02-19 12:16:15 · 156 阅读 · 0 评论 -
进程之间的通信(wait/notify)
进程通信的概念:线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的比用方式之一。当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时还会使开发人员对线程任务在处理的过程中进行有效的把控与监督。使用wait/notify方法实现线程间的通信(注意这两个方法都是object的类的方法,所有对象都有这两个方法):1.wait和no...原创 2019-02-19 15:05:10 · 566 阅读 · 0 评论 -
使用wait/notify模拟Queue(生产者消费者)
BlockingQueue:一个支持阻塞机制的队列,阻塞的放入和得到数据。import java.util.LinkedList;import java.util.concurrent.atomic.AtomicInteger;public class MyQueue { //1.需要一个承装元素的集合,插入删除多的情况使用LinkedList private LinkedList&l...原创 2019-02-19 17:52:22 · 212 阅读 · 0 评论 -
单例和多线程
ThreadLocal概念:线程局部变量,是一种多线程间并发访问变量的解决方案。与synchronized等加锁方法是不同,ThreadLocal完全不提供锁,而使用以空间换时间的手段,为每个线程提供变量的独立副本,以保障线程安全。从性能上说,ThreadLocal不具有绝对的优势,在并发不是很高的时候,加锁的性能会更好,但作为一套与锁完全不管的线程安全解决方案,在高并发量或者竞争激烈的场景,...原创 2019-02-19 21:50:49 · 1072 阅读 · 0 评论