随笔分类 -  Java并发

学习笔记
摘要:相关链接 一、介绍 /** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses 阅读全文
posted @ 2020-05-01 23:09 Qmillet 阅读(241) 评论(0) 推荐(0)
摘要:一、概述 同步代码块/同步方法具有的功能Lock都具有,另外ReetranttLock具有其他功能。例如公平锁、响应中断、获取锁时限时等待、结合Condition实现等待机制。 ReetranttLock是可重入锁的独占锁。比起synchronized功能更加丰富,实现公平锁实现、支持中断响应以及实 阅读全文
posted @ 2020-03-31 15:06 Qmillet 阅读(227) 评论(0) 推荐(0)
摘要:生产者消费者模式通过一个阻塞队列来解决两者之间的强耦合问题。阻塞队列相当于一个缓冲区,平衡消费者和生产者的处理能力。 阻塞队列有数据——生产者不生产,阻塞队列没数据——消费者不消费 一、synchronized+wait+notifyAll 生产 package com.ProductCusrome 阅读全文
posted @ 2020-03-30 21:49 Qmillet 阅读(2875) 评论(0) 推荐(0)
摘要:生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。 其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数 阅读全文
posted @ 2020-03-28 15:19 Qmillet 阅读(308) 评论(0) 推荐(0)
摘要:一、线程状态转换图 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } ★ 调用obj.wait()的线程需要先获取obj的monitor,wait()会释放obj的monitor并进入等 阅读全文
posted @ 2020-03-28 13:13 Qmillet 阅读(340) 评论(0) 推荐(0)
摘要:java锁机制 — 偏向锁、轻量级锁、重量级锁 synchronized作用在静态方法时,锁住整个类; synchronized作用在方法上时,锁住整个对象; synchronized作用于某一个对象实例时,所著的便是对应的代码块。 一、Java对象头 对象头包含两部分:Mark Word 和 Cl 阅读全文
posted @ 2020-03-15 22:55 Qmillet 阅读(331) 评论(0) 推荐(0)
摘要:参考博客 一、什么时候使用线程池 单个任务处理时间比较短,且需要处理的任务数量很大。 二、线程池优势 1.重用存在的线程,减少线程创建、消亡的开销,提高性能。 2.提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行。 3.提高线程的可管理型,可以统一分配、调优和监控。 三、线程池运行 阅读全文
posted @ 2020-03-11 21:54 Qmillet 阅读(268) 评论(0) 推荐(0)
摘要:本章内容: 1.死锁 2.多线程并发最佳实践(如何安全并发) 3.Spring与线程安全 4.HashMap与ConcurrentHashMap深入分析 一、死锁 1.产生必要条件 (1)互斥条件:进程要求对所分配的资源(如打印机)进⾏排他性控制,即在⼀段时间内某资源仅为⼀个进程所占有。此时若有其他 阅读全文
posted @ 2019-12-27 20:56 Qmillet 阅读(301) 评论(0) 推荐(0)
摘要:本章内容: 1.FutureTask 2.ForkJoin 3.BlockingQueue 一、FutureTask 通过直接继承Thread和实现Runnable接口创建线程,都有一个缺点:在执行完任务之后无法获取执行结果。而自从JDK1.5开始,提供了Callable和Future,通过他们可以 阅读全文
posted @ 2019-12-26 22:25 Qmillet 阅读(199) 评论(0) 推荐(0)
摘要:本章内容: 1.CountDownLatch 2.CyclicBarrier 3.Semaphore 4.ReentrantLock 一、CountDownLatch CountDownLatch类使用AQS同步状态来表示计数。当该计数为0时,所有的acquire操作(对应到CountDownLat 阅读全文
posted @ 2019-12-26 17:10 Qmillet 阅读(316) 评论(0) 推荐(0)
摘要:相关链接 https://www.cnblogs.com/barrywxx/p/8678698.html 本章内容: 1.AQS产生背景 2.AQS的设计和结构 3.AQS源代码实现 4.AQS应用(继承AQS的组件)★★★★★--见5-2 一、AQS产生背景 Jdk1.5开始引入了j.u.c包,这 阅读全文
posted @ 2019-12-23 21:31 Qmillet 阅读(245) 评论(0) 推荐(0)
摘要:本章内容 1.不可变对象:不可变对象条件、final关键字、Collections.unmodifiableXXX、Guava ImmutableXXX 2.线程封闭:Ad-hoc线程封闭、堆栈封闭、ThreadLocal-JDBC分析 3.线程不安全类:StringBuilder->StringB 阅读全文
posted @ 2019-12-23 20:52 Qmillet 阅读(225) 评论(0) 推荐(0)
摘要:本章内容 1.发布对象与对象逸出 2.安全发布的四个方法 一、发布对象和对象逸出 发布对象:使一个对象能够被当前范围之外的代码所使用。 对象逸出:是一种错误的发布,之当一个对象还没有构造完成时,就对其他线程可见 二、安全发布的四种方法 1.在静态初始化函数中初始化一个对象引用。 2.将对象的引用保存 阅读全文
posted @ 2019-12-23 15:34 Qmillet 阅读(131) 评论(0) 推荐(0)
摘要:本章内容: 原子性:AtomicXXX、CAS原理、Unsafe、AtomicLong&LongAddr、AtomicReference&AtomicReferenceFieldUpdater、AtomicStampReference 锁:synchronized(修饰代码块、方法、静态方法、类)、 阅读全文
posted @ 2019-12-22 22:31 Qmillet 阅读(293) 评论(0) 推荐(0)
摘要:本章内容: 1.并发与高并发理解 2.缓存一致性 3.乱序执行优化 4.Java内存模型(JMM) 5. 并发的优势、风险 一、并发与高并发理解 并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入换出内存,这些线程时同时存在的,只不过处于执行过程中的不同状态。如果运行在 阅读全文
posted @ 2019-12-22 17:28 Qmillet 阅读(257) 评论(0) 推荐(0)