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