随笔分类 -  Java并发编程的艺术

读过以后自己整理的一些知识点,方便理解记忆
第十章 Executor框架
摘要:在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。 Java的线程既是工作单元,也是执行机制。从JDK 阅读全文

posted @ 2018-10-03 17:01 胡子就不刮 阅读(193) 评论(0) 推荐(0) 编辑

第九章 Java中线程池
摘要:Java中的线程池是运用场景最多的并发框架,几乎所有需求异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 线程池的实现原理 当向线程池提交一个任务之后,线程池是如何处理这个任务呢?如图 从图中可以看出,当提交一个新任务到线程池时,线程池的处理流程如下 (1) 阅读全文

posted @ 2018-10-03 16:53 胡子就不刮 阅读(159) 评论(0) 推荐(0) 编辑

第八章 Java中的并发工具类
摘要:等待多线程完成的CountDownLatch countDownLatch允许一个或多个线程等待其他线程完成操作。 countDownLatch的构造函数接受一个int类型的参数作为计数器,如果你想等待N个点完成,这里就传入N 当我们调用countDownLatch的countDown方法时,N就会 阅读全文

posted @ 2018-10-03 10:49 胡子就不刮 阅读(115) 评论(0) 推荐(0) 编辑

第七章 Java中的13个原子操作类
摘要:当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i = 1;A线程更新i + 1,B线程也更新i + 1,经过两个线程操作之后可能i不等于3,而是等于2,。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronize 阅读全文

posted @ 2018-10-02 21:12 胡子就不刮 阅读(148) 评论(0) 推荐(0) 编辑

第六章 Java并发容器和框架
摘要:ConcurrentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的hashmap。本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作。 为什么要使用ConcurrentHashMap 在并发编程中使用HashMap可能导致程序死循环。而使用 阅读全文

posted @ 2018-10-01 22:39 胡子就不刮 阅读(165) 评论(0) 推荐(0) 编辑

第五章 Java中锁
摘要:Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而在Java SE 5之后,并发包中新增了Lock接 阅读全文

posted @ 2018-09-28 22:25 胡子就不刮 阅读(160) 评论(0) 推荐(0) 编辑

第四章 Java并发编程基础
摘要:线程简介 什么是线程? 现代操作系统在一个运行程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量 阅读全文

posted @ 2018-09-23 23:30 胡子就不刮 阅读(148) 评论(0) 推荐(0) 编辑

第三章 Java内存模型(下)
摘要:锁的内存语义 锁可以让临界区互斥执行。这里将介绍锁的另一个同样重要但常常被忽视的功能:锁的内存语义 锁的释放-获取建立的happens-before关系 锁是Java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息 下面是锁释放-获取的示例代码 阅读全文

posted @ 2018-09-23 23:22 胡子就不刮 阅读(129) 评论(0) 推荐(0) 编辑

第三章 Java内存模型(上)
摘要:本章大致分为4部分: Java内存模型的基础 并发编程模型的两个关键问题 在并发编程中,需要处理两个关键问题: 线程之间如何通信:指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种(共享内存和消息传递) 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共 阅读全文

posted @ 2018-09-23 15:27 胡子就不刮 阅读(110) 评论(0) 推荐(0) 编辑

第二章 并发机制的底层实现原理
摘要:Java代码在编译后 编程Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。 volatiled的应用 volatile是轻量级的synchronized,它在多处理器开发中保证了共享变 阅读全文

posted @ 2018-09-20 23:47 胡子就不刮 阅读(178) 评论(0) 推荐(0) 编辑

第一章 并发编程的挑战
摘要:并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行,在进行并发编程时,如果希望通过多线程执行任务让程序运动得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬件和软件的资源限制问题。 挑战一:上下文切换 多线程一定比单线程快么? 输出 阅读全文

posted @ 2018-09-19 22:26 胡子就不刮 阅读(190) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示