摘要:
一、并发编程领域的关键问题 1.线程之间的通信和同步 1.1 线程之间的通信 线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享内存和消息传递。 1.1.1 共享内存 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通 阅读全文
摘要:
一、多线程安全单例模式实例一(不使用同步锁) public class Singleton { private static Singleton sin=new Singleton(); ///直接初始化一个实例对象 private Singleton(){ ///private类型的构造函数,保证 阅读全文
摘要:
一、情景 我们先看一下出现死锁的情景: package com.youyou.ch7; import com.youyou.tools.SleepTools; public class NormalDeadLock { private static Object valueFirst = new O 阅读全文
摘要:
一、类的线程安全定义 (Doung Lee)如果多线程下使用这个类,不管多线程如何使用和调度这个类,这个类总是表示出正确的行为,这个类就是线程安全的。 类的线程安全表现为: 操作的原子性 内存的可见性 不做正确的同步,在多个线程之间共享状态的时候,就会出现线程不安全。 二、怎么才能做到类的线程安全 阅读全文
摘要:
一、了解CompletionService CompletionService整合了Executor和BlockingQueue的功能。 你可以将Callable任务提交给它去执行,然 后使用类似于队列中的take和poll方法,在结果完整可用时获得这个结果,像一个打包的Future。 Execut 阅读全文
摘要:
一、什么是线程池?为什么要用线程池? 1、 降低资源的消耗。降低线程创建和销毁的资源消耗; 2、 提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间 3、 提高线程的可管理性。 二、线程池的创建 ThreadPoolExecutor,jdk所有线程池实现的父类 三、 阅读全文
摘要:
概念、生产者消费者模式 1)当队列满的时候,插入元素的线程被阻塞,直达队列不满。 2)队列为空的时候,获取元素的线程被阻塞,直到队列不空。 生产者和消费者模式 生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者 阅读全文
摘要:
一、首先我们来熟悉一下跳表(数据结构和算法) 参考资料: https://www.cnblogs.com/seniusen/p/9870398.html https://blog.csdn.net/u010425776/article/details/54890215 跳表的由来:作用:存储有序序列 阅读全文