随笔分类 - 并发
摘要:概述 本文将对JDK8中 ConcurrentHashMap 源码进行一定程度的解读。解读主要分为六个部分:主要属性与相关内部类介绍、构造函数、put过程、扩容过程、size过程、get过程、与JDK7实现的简单对比。希望对读者学习ConcurrentHashMap有一定的帮助。 阅读本文前,可能需
阅读全文
摘要:在实际项目中,如果因为想异步执行暂时性的任务而不断创建线程是很浪费资源的事情(当一个任务执行完后,线程也没用了)。这种情况下,最好是将任务提交给线程池执行。 所谓池,就是将管理某一种资源,对资源进行复用的对象。线程池就是对线程管理的对象。 本文就是介绍线程池内部是如何管理线程,并复用线程的。 相关接
阅读全文
摘要:介绍 是`j.u.c ReadWriteLock`接口的实现。 作为读写锁,提供了返回读锁和返回写锁两个方法。 其中读锁是一个共享锁,而写锁是一个独占锁。 也就是说多个线程可以同时持有读锁,而写锁只能被一个线程持有。 除此之外, 还有几个特性: 读锁和写锁都是可重入的 线程在持有写锁时,可以再获取读
阅读全文
摘要:介绍 是`j.u.c`包下提供的一个接口。 可以翻译成 条件对象,其作用是线程先等待,当外部满足某一条件时,在通过条件对象唤醒等待的线程。 就是通过 实现的。 先看一下 接口提供了哪些方法: 接口主要提供了两类方法——让线程等待的方法(await()等)和唤醒线程的方法(signal())。 内部提
阅读全文
摘要:介绍 j.u.c包中的 定义了锁的行为。 而 是并发包下提供的一个锁的实现,它是一个可重入的、排他的锁。 有的属性也很简单,除了一个 外,只有一个 。 可以分为公平锁和非公平锁两种。可以在创建时,通过向构造函数传入 参数指定: 无参的构造函数默认会创建一个非公平锁。公平锁和非公平锁的主要区别是:公平
阅读全文
摘要:线程的状态 枚举类型中定义了线程的六种状态: ,`RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED`。 线程在某一时刻只能拥有一种状态,但是在线程的整个生命周期,线程的状态会发生变化。 各状态的说明 NEW NEW状态是线程已经被创建,但还没调用 。
阅读全文
摘要:实现了一个简化版的线程池。 实现线程池的关键有两个:一是阻塞队列,用于任务的存取,二是内部的线程对象如何持续性的执行任务,并在空闲时被回收。 线程池代码: 测试代码: 虽然是继承了ExecutorService对象,但是只实现了几个接口,设计上也可能有未考虑到的问题。 测试代码也很简陋,仅供参考。
阅读全文

浙公网安备 33010602011771号