
学习笔记
文章平均质量分 91
阿登灯
不积跬步无以至千里!诸君共勉之!
展开
-
【Java并发编程的艺术】【学习笔记】锁
3、锁 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。 Java5之前,Java程序是靠synchronized关键字实现锁的功能,之后,并发包新增了Lock接口用来实现锁功能,使用时需要显示的获取和释放锁。虽然它缺少了隐式释放锁的便捷性,但是却拥有了锁获取和释放的可操作性、可中断的获原创 2018-01-02 20:42:36 · 318 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】Java内存模型(JMM)
1、Java内存模型(JMM)1.1、线程通信机制 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型中,线程之间共享程序的公共状态,通过写—读内存中的公共状态进行隐式通信。 在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发原创 2017-12-27 22:35:39 · 598 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】并发工具类
4、并发工具类4.1、CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。 假设有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等待所有的sheet都解析完之后,程序需要提示解析完成。在这个需求中,要实现主线程等待所有线程完成sheet的解析操作,最简单的做法是使用原创 2018-01-03 21:59:13 · 640 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】并发基础
2、并发基础2.1、AQS 队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,并发包的作者(Doug Lea)希望他能够成为实现大部分同步需求的基础。 同步器的设计是基于模板方法模式的,主要使用方式是继承,子类通过继承同步器并原创 2017-12-28 21:41:11 · 371 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】ThreadLocal与Fork/Join
5、其他5.1、ThreadLocal 一种解决多线程环境下成员变量的问题的方案,但是与线程同步无关。其思路是为每个线程创建一个单独的变量副本,从而每个线程都可以独立地改变自己所拥有的变量副本,而不会影响其他线程对应的副本。 ThreadLocal不是用于解决共享变量的问题的,也不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引入的一种机制。Thre原创 2018-01-04 21:29:31 · 1014 阅读 · 1 评论 -
【深入理解Java虚拟机 第2版】【学习笔记】JVM
涉及到JVM字节码指令的部分,我选择性的跳过了,毕竟不需要自己写虚拟机。重点是JVM的数据模型、垃圾回收和类加载机制。原创 2018-01-16 23:30:33 · 474 阅读 · 0 评论 -
【Java并发编程的艺术】【学习笔记】Java并发集合
8、阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加操作支持阻塞的插入和移除方法。 1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和消费者的场景。插入和移除操作的4中处理方式原创 2018-01-19 20:47:23 · 214 阅读 · 0 评论 -
【学习笔记】JMX1.4总结(持续更新)
介绍Java Management Extensions(Java管理扩展)。通俗的讲,通过JMX可以对Java对象进行管理和检测。JMX是Java Platform Standard Edition的一部分。JMX三层体系结构Instrumentation Level(仪表层)其实我觉得叫MBean层更合适些。因为这层面向的是JVM中需要管理的MBean资源对象。Ag...原创 2018-03-01 22:27:36 · 323 阅读 · 0 评论