Java并发
文章平均质量分 94
Wenqi_B
To do one thing well!
展开
-
Java并发系列笔记之Java中的锁
锁是多线程下进行同步互斥的重要实现依托,Java语言中除了提供了使用synchronized关键字提供的隐式锁,也提供了以Lock接口定义的显示锁。一般Lock的子类实现依赖于一个抽象队列同步器(AbstractQueuedSynchronizer, AQS)的子类实现。AQS的目的是提供对同步状态的获取和释放的基础同步功能给依赖者使用,而屏蔽了同步状态获取和释放的具体实现。AQS是一个抽象类,它使原创 2018-05-10 13:03:22 · 264 阅读 · 0 评论 -
Java并发系列笔记之线程池
线程池是资源复用的典范之作,其基本思想是维护一个含有一定数量的在运行的线程集合,在需要运行线程任务的时候直接从这个集合中取出一个线程去运行任务,而不是重新创建一个。 如果我们自己去实现一个线程池,那么基本的想法是维护一个线程的集合,这些线程都从一个队列中去取任务,如果队列为空,则阻塞对应的线程,等待队列不空的消息通知。当线程完成了任务,应该将线程返回给线程队列,而不是关闭线程。基本思想是这样...原创 2018-05-10 13:05:05 · 231 阅读 · 0 评论 -
Java并发系列笔记之并发容器ConcurrentHashMap
线程不安全的HashMap 多线程情况下,HashMap由于在扩容的时候会导致链变成环,在下一次查询的时候会使得出现死循环的出现。变成环的主要原因在于HashMap扩容的逻辑是不具有原子性的,扩容的基本逻辑包括下面三条: 1. 当前节点为e,获取当前节点的下一个节点next 2. 将e按照hash移到到扩容后的hash表中,置e.next等于newtable[i],头插法 3. 将e置为n...原创 2018-05-10 13:05:57 · 288 阅读 · 0 评论