2018年5月19日

摘要: Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。 主内存与工作内存 处理器上的寄存器的读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共 阅读全文
posted @ 2018-05-19 18:19 little飞 阅读(299) 评论(0) 推荐(0) 编辑
 

2018年4月21日

摘要: Master-Worker模式是常用的并行设计模式。核心思想是,系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负责处理子任务。任务处理过程中,Master还负责监督任务进展和Worker的健康状态;Master将接收Client提交的任务,并将任务的进展 阅读全文
posted @ 2018-04-21 17:03 little飞 阅读(3370) 评论(3) 推荐(0) 编辑
 
摘要: FutureClient代码实现: FutureData代码及实现: RealData代码及实现: Data接口代码: 测试类代码: 阅读全文
posted @ 2018-04-21 16:43 little飞 阅读(1859) 评论(0) 推荐(0) 编辑
 

2018年3月31日

摘要: Netty介绍: Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开 阅读全文
posted @ 2018-03-31 17:40 little飞 阅读(10279) 评论(1) 推荐(2) 编辑
 

2018年1月9日

摘要: String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 答案应该是1个或者2个。 1个的情况:如果字符串池中已经存在了"abc"这个对象,那么直接在创建一个对象放入堆中,返回str引用。 2个的情况:如果字符串 阅读全文
posted @ 2018-01-09 09:13 little飞 阅读(5438) 评论(0) 推荐(0) 编辑
 

2017年12月15日

摘要: 明明用了ConcurrentHashMap,可是始终线程不安全, 下面我们来看代码: 测试代码跑了10次,每次都不是800。这就很让人疑惑了,难道ConcurrentHashMap的线程安全性失效了? 查了一些资料后发现,原来ConcurrentHashMap的线程安全指的是,它的每个方法单独调用( 阅读全文
posted @ 2017-12-15 10:30 little飞 阅读(3309) 评论(5) 推荐(2) 编辑
 

2017年11月28日

摘要: Hash碰撞冲突 我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。如下将介绍如何处理冲突,当然其前提是一致性hash。 1.开放地址法 开放地执法有一个公式: 阅读全文
posted @ 2017-11-28 09:33 little飞 阅读(10468) 评论(0) 推荐(0) 编辑
 

2017年9月27日

摘要: 演示一个阻塞队列的使用 部分运行结果如下, 线程Thread-1 准备放数据了 线程Thread-0 准备放数据了 线程Thread-1 已经放完数据了,目前队列有1个数据 线程Thread-0 已经放完数据了,目前队列有2个数据 线程Thread-2 准备取数据了 线程Thread-2 已经取完数 阅读全文
posted @ 2017-09-27 14:06 little飞 阅读(948) 评论(0) 推荐(0) 编辑
 
摘要: 先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数。 请看下面的演示代码: 执行结果如下: 线程 pool-1-thread-2 进入 ,当前已有 2 个并发 线程 阅读全文
posted @ 2017-09-27 10:50 little飞 阅读(276) 评论(0) 推荐(0) 编辑
 
摘要: 本文直接附上源代码,如下是自己写的一个例子 面试题需求: 使用Condition来实现 三个线程 线程1 线程2 线程3 三个交替输出 【按照 线程1(main)-->线程2-->线程3】如此往复50次 请写出程序 输出结果可以自己尝试输出,指定到一个输出文件中,便于查看。 阅读全文
posted @ 2017-09-27 10:18 little飞 阅读(964) 评论(0) 推荐(0) 编辑