摘要: 并发编程--锁-介绍 LOCK ReentrantLock Condition ReentrantReadWriteLock 1. LOCK(计时器) 介绍 从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 既然都可以通 阅读全文
posted @ 2018-11-20 16:03 花神47699 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 并发编程--Concurrent-工具类介绍 并发编程--Concurrent-工具类介绍 CountDownLatch CylicBarrier Semaphore Condition 对象监视器下个篇幅引入 Callable 不单独说明 Demo中会使用 Future Java 5 添加了一个新 阅读全文
posted @ 2018-11-20 15:42 花神47699 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 并发编程线程池 合理利用线程池能够带来三个好处。 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳 阅读全文
posted @ 2018-11-20 15:31 花神47699 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 并发编程--多线程设计模式 - 生产者-消费者模式 1. 生产者-消费者模式 生产者和消费者也是一个非常经典的多线程模式,我们在实际中开发应用非常广泛的思想理念。在生产-消费模式中:通常由两类线程,即若干个生产者和若干个消费者的线程。 生产者负责提交用户数据,消费者负责具体处理生产者提交的任务,在生 阅读全文
posted @ 2018-11-20 15:23 花神47699 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 多线程设计模式 - Master-Worker模式 并发设计模式属于设计优化的一部分,它对于一些常用的多线程结构的总结和抽象。与串行相比并行程序结构通常较为复杂,因此合理的使用并行模式在多线程并发中更具有意义。 1. Master-Worker模式 - Master-Worker模式是常用的并行模式 阅读全文
posted @ 2018-11-20 15:21 花神47699 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 多线程设计模式 - Future模式 并发设计模式属于设计优化的一部分,它对于一些常用的多线程结构的总结和抽象。与串行相比并行程序结构通常较为复杂,因此合理的使用并行模式在多线程并发中更具有意义。 1. Future Future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。 这 阅读全文
posted @ 2018-11-20 15:20 花神47699 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 并发编程--Queue Queue - 非阻塞队列 - 阻塞队列 Queue是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 在队列这种数据结构中,最先插入的元素 阅读全文
posted @ 2018-11-20 15:13 花神47699 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 并发编程--同步类容器和并发类容器 同步类容器: - Vector - HashTable 并发类容器 - ConcurrentMap - CopyOnWrite 同步类容器: * 同步类容器 都是线程安全的,但是在某些场景下可能需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历容器中所 阅读全文
posted @ 2018-11-20 15:03 花神47699 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 并发编程--单例模式(饥饿模式-懒汉模式) 1. 单例模式: - 最常见的单例模式:饥饿模式-懒汉模式; 1. 饥饿模式:直接实例化对象; 2. 懒汉模式:调用方法时进行实例化对象。 - 还有一种经典做法:在多线程模式中,一般选择如下几种单例模式: 1. dubble check instance: 阅读全文
posted @ 2018-11-20 14:55 花神47699 阅读(785) 评论(0) 推荐(0) 编辑
摘要: 并发编程--ThreadLocal 1. ThreadLocal : * 线程局部变量,是一种多个线程间并发访问变量的解决方案。 * 与其使用synchronized等加锁的方式,ThreadLocal完成不提供锁,而是用空间换时间的手段,为每个线程提供变量的独立副本,以保证线程安全; * 从性能上 阅读全文
posted @ 2018-11-20 14:52 花神47699 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 并发编程--多线程通信-wait-notify-模拟Queue 1. BlockingQueue 顾名思义,首先是一个队列,其次支持阻塞的机制;阻塞放入和获取队列中的数据。 如何实现这样一个队列: 要实现比如LinkedBlockQueue 下面两个简单的方法 put和take put(Object 阅读全文
posted @ 2018-11-20 14:49 花神47699 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 并发编程--多线程通信-wait-notify 多线程通信:线程通信的目的是为了能够让线程之间相互发送信号; 1. 多线程通信: 线程通信的目的是为了能够让线程之间相互发送信号。另外,线程通信还能够使得线程等待其它线程的信号,比如,线程B可以等待线程A的信号,这个信号可以是线程A已经处理完成的信号; 阅读全文
posted @ 2018-11-20 14:46 花神47699 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 并发编程--volatile volatile-说明 volatile关键字的作用是变量在多个线程可见; volatile 关键字是非原子性的 要是实现原子性操作,建议使用atomic类的系列对象:支持原子性操作(注意atomic类只保证本身方法的原子性,并不保证多次操作的原子性) 1. volat 阅读全文
posted @ 2018-11-20 13:45 花神47699 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 并发编程-synchronized 细节说明 1. synchronized-锁重入 & 异常释放锁 说明 * 关键字synchronized 拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象的锁后,再次请求此对象时可以再次得到该对象的锁; 2. synchroniz 阅读全文
posted @ 2018-11-20 13:38 花神47699 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 并发编程-“公平锁”的获取锁机制 细节说明 title: 并发编程-“公平锁”的获取锁机制 细节说明date: 2018-07-05 09:06:57categories: - 并发编程 <Excerpt in index | 首页摘要><!-- more --> - 本章对本文的公平锁指的是互斥锁 阅读全文
posted @ 2018-11-20 13:26 花神47699 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 并发编程-ReentrantLock 细节说明 title: 并发编程-ReentrantLock 细节说明date: 2018-07-05 09:06:57categories: - 并发编程 <Excerpt in index | 首页摘要><!-- more --> - 本章对Reentran 阅读全文
posted @ 2018-11-20 13:20 花神47699 阅读(170) 评论(0) 推荐(0) 编辑
摘要: title: 并发编程--线程基础date: 2018-07-05 09:12:57categories: - 并发编程 <Excerpt in index | 首页摘要><!-- more --><The rest of contents | 余下全文> 并发编程--线程基础 1. 当多个线程访问 阅读全文
posted @ 2018-11-20 12:31 花神47699 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。 线程线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位 阅读全文
posted @ 2018-11-20 10:15 花神47699 阅读(110) 评论(0) 推荐(0) 编辑