摘要: 一、ConcurrentHashMap (1)为什么使用ConcurrentHashMap? HashMap是非线程安全的,在并发环境中可能会引起死循环 HashTable是线程安全的,但是全部使用悲观锁效率非常慢 ConcurrentHashMap采用分段的技术(降低了锁粒度)、CAS(比较并交换 阅读全文
posted @ 2018-10-23 20:14 竹两行 阅读(288) 评论(0) 推荐(0)
摘要: 相比于synchronized关键字,lock接口没有了隐式获取释放锁的便捷,但拥有了锁获取和释放的可操作性。lock接口是面向使用者的,定义了使用者和锁交互的接口隐藏了实现细节,而大多数锁的实现是通过聚合一个线程同步器子类来完成线程访问控制的,同步状态管理、线程排队、等待与唤醒等操作交给同步器来实 阅读全文
posted @ 2018-10-23 20:13 竹两行 阅读(253) 评论(0) 推荐(0)
摘要: 实现一个线程安全的队列有两种方式,一种是阻塞算法,另一种是非阻塞算法。使用阻塞算法有两种方式:两把锁(出队和入队采用不同的锁),或者出队入队采用同一把锁。而非阻塞算法可以采用循环CAS的方式来实现。ConcurrentLinkedQueue采用基于链接节点的无界安全队列来实现,采用wait free 阅读全文
posted @ 2018-10-23 20:13 竹两行 阅读(159) 评论(0) 推荐(0)
摘要: 一、概念 Socket通信 Socket(套接字)不是协议,工作在OSI七层协议的第五层会话层(TCP协议工作在第四层传输层),是应用层与TCP/IP协议组通信的中间软件抽象层,它是一组接口(门面设计模式)。它把复杂的TCP/IP协议隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让 阅读全文
posted @ 2018-10-23 20:11 竹两行 阅读(286) 评论(0) 推荐(0)
摘要: 在并发场景下,几乎所有的异步操作和任务执行都可以使用线程池,线程池具有如下优点 降低资源消耗 提高响应速度 提高线程的可管理性 实现原理 从图中可以看出,提交一个新任务到线程池的处理流程如下: 判断线程池里的核心线程是否都在执行任务,如果不是则创建一个新的工作线程执行任务,如果是则进入下个流程(co 阅读全文
posted @ 2018-10-18 09:44 竹两行 阅读(156) 评论(0) 推荐(0)