并发编程复习
文章平均质量分 64
笼中人.
鱼跃龙门,非一日之功;冰冻三尺,非一日之寒
展开
-
并发编程复习(九):Future模式
Future设计模式其实跟AJax请求有点相像,他无非就是在一个线程访问的时候,先返回一个假的,空壳的数据给客户端,然后后台再开启一个线程去执行任务,等到前台真正使用结果数据的时候,再返回真正的数据给客户端,如果此时数据没有加载完毕,就阻塞。这种模式不走业务逻辑,直接返回假的数据给客户端,然后自己开一个线程偷偷加载数据。下面来看一个小案例:设计一个Data接口,表示返回的数据,里面只有一个原创 2017-09-23 20:41:10 · 248 阅读 · 0 评论 -
并发编程复习(七):并发类容器ConcurrentHashMap&CopyOnWrite
这里就不上代码了,因为它对应的就是HashTable,只不过在上面做了很大优化,即支持相对较高的并发。ConcurrentHashMap在JDK1.5之后出现,底层原理:内部将存储的数据分为了16个段,一个线程访问一个段中的数据的时候,会将这个段上锁,即加上synchronized同步,其他线程同时访问时会等其他线程释放锁后进行操作。是不是感觉没啥不一样的?但是,注意,是16个段,也就是不原创 2017-09-21 22:07:56 · 290 阅读 · 0 评论 -
并发编程复习(六):使用wait和notify模拟阻塞队列
话不多说,代码如下import java.util.LinkedList;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;/** * 使用wait和notify模拟阻塞队列...... */public class MyQueue { privat原创 2017-09-21 20:20:03 · 268 阅读 · 0 评论 -
并发编程复习(五):CountDownLatch
今天主要基于上一节的文章,其实这两张连起来是阿里的一道面试题。上一节我们说明了notify不能释放锁,那么怎么能做到及时通知呢?这时就可以用concurrent包下的一个同步工具类:CountDownLatch。代码说明:import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountD原创 2017-09-21 17:44:08 · 298 阅读 · 0 评论 -
并发编程复习(四):wait和notify解析
首先本篇文章要说的是:wait方法会释放当前锁对象,但是notify不会释放锁,可能你并未理解什么意思,上代码:public class MyThread6 { private volatile List list = new ArrayList<>(); public void add() { list.add("主席"); } public int getSize() {原创 2017-09-20 17:47:35 · 309 阅读 · 0 评论 -
并发库编程复习(三):volatile解析二
首先本篇文章要说明是volatile不具备原子性,即不具备synchronized的同步特性:public class MyThread5 extends Thread{ private static volatile int count; //private static AtomicInteger count = new AtomicInteger(0); @Override pu原创 2017-09-20 17:39:52 · 246 阅读 · 0 评论 -
并发编程复习(二):volatile关键字使用
* vllatile关键字使得变量在线程之间可见。什么叫可见? * 在JDK1.5之后,启动一个线程JVM会单独独立出来一块线程内存,此线程中拷贝了线程变量对主存储区域数据,也就是说线程中变量引用的主存储空间的数据会被拷贝到线程内存当中,拿取数据时只会到线程内存中取(不加volatile关键字情况下),因此改变成员变量内容之后线程内存当中是没有变化的。 * 如需要变化就需要在变量前原创 2017-09-20 17:33:31 · 275 阅读 · 0 评论 -
关于JAVA并发库编程的复习(一):synchronized锁重入
复习第一节:synchronized锁重入import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * 锁重入 * @author lihao * */public class MyThread3 {public原创 2017-09-20 17:28:21 · 223 阅读 · 0 评论 -
并发编程复习(十):master和worker模式
首先说说这个模式的特点与原理,看图:原理就是master用来管理调度worker并负责结果集的处理,实际开发中你可以任意的开启任意多的worker去执行任务,取决于你的CPU得性能,下面来看看模拟:任务类:Task:package com.zkingsoft.masterandworker;/** * @Author Lee_Hoo * @DATE Created in原创 2017-09-24 16:52:36 · 560 阅读 · 0 评论 -
并发编程复习(八):队列相关
package cn.lh.queue;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Queue;import java.util.concurrent.*;/** * @Author Lee_Hoo * @DATE Created in 2原创 2017-09-22 15:33:10 · 275 阅读 · 0 评论