![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
不会程序的JAVA程序媛
I'm willing to do anything but ordinary
展开
-
《JAVA并发编程的艺术》之 Java并发编程实战
《JAVA并发编程的艺术》之 Java并发编程实战文章目录《JAVA并发编程的艺术》之 Java并发编程实战生产者和消费者模式生产者消费者模式实战多生产者和多消费者场景线程池与生产消费者模式线上问题定位性能测试查看网络流量。查看系统平均负载。查看系统内存情况。查看CPU的利用率。异步任务池当你在进行并发编程时,看着程序的执行速度在自己的优化下运行得越来越快,你会觉得越来越有成就感,这就是并发编程的魅力。但与此同时,并发编程产生的问题和风险可能也 会随之而来。本章先介绍几个并发编程的实战案例,然后再介绍如原创 2020-07-12 16:23:35 · 1173 阅读 · 0 评论 -
《JAVA并发编程的艺术》之 Executor框架
《JAVA并发编程的艺术》之 Executor框架文章目录《JAVA并发编程的艺术》之 Executor框架Executor框架简介10.1.1 Executor框架的两级调度模型Executor框架的结构与成员1. Executor框架的结构2. Executor框架的成员ThreadPoolExecutor详解FixedThreadPool详解SingleThreadExecutor详解CachedThreadPool详解ScheduledThreadPoolExecutor详解ScheduledTh原创 2020-07-12 14:42:25 · 756 阅读 · 0 评论 -
《JAVA并发编程的艺术》之 Java中的线程池
《JAVA并发编程的艺术》之 Java中的线程池文章目录《JAVA并发编程的艺术》之 Java中的线程池线程池的实现原理线程池的使用线程池的创建向线程池提交任务关闭线程池合理地配置线程池线程池的监控Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提原创 2020-07-11 14:32:05 · 813 阅读 · 0 评论 -
《JAVA并发编程的艺术》之 Java中的并发工具类
《JAVA并发编程的艺术》之 Java中的并发工具类文章目录《JAVA并发编程的艺术》之 Java中的并发工具类等待多线程完成的CountDownLatch同步屏障CyclicBarrierCyclicBarrier简介CyclicBarrier的应用场景CyclicBarrier和CountDownLatch的区别控制并发线程数的Semaphore1. 应用场景2. 其他方法线程间交换数据的ExchangerExchanger的应用场景。在JDK的并发包里提供了几个非常有用的并发工具类。CountDo原创 2020-07-11 11:08:06 · 875 阅读 · 0 评论 -
《JAVA并发编程的艺术》之 Java中的13个原子操作类
《JAVA并发编程的艺术》之 Java中的13个原子操作类文章目录《JAVA并发编程的艺术》之 Java中的13个原子操作类原子更新基本类型类原子更新数组原子更新引用类型原子更新字段类当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问题,synchroni原创 2020-07-10 20:44:42 · 874 阅读 · 0 评论 -
《并发编程的艺术》之 Java并发容器和框架
Java并发容器和框架Java程序员进行并发编程时,相比于其他语言的程序员而言要倍感幸福,因为并发编程大师Doug Lea不遗余力地为Java开发者提供了非常多的并发容器和框架。本章让我们一起来见识一下大师操刀编写的并发容器和框架,并通过每节的原理分析一起来学习如何设计出精妙的并发程序。ConcurrentHashMap的实现原理与使用ConcurrentHashMap是线程安全且高效的HashMap。本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作。为什么要使用Concur原创 2020-07-10 16:40:34 · 895 阅读 · 0 评论 -
HashMap进行put操作会引起死循环?
HashMap进行put操作会引起死循环?最近在磕《java并发编程艺术》,在看到第六章的时候出现了下面这段我不是很理解的东西,如下《java并发编程艺术》截取为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。1. 线程不安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%原创 2020-07-03 13:22:33 · 6079 阅读 · 4 评论 -
《JAVA并发编程的艺术》Java中的锁
《JAVA并发编程的艺术》Java中的锁文章目录《JAVA并发编程的艺术》Java中的锁Lock接口代码清单5-1 LockUseCase.java表5-1 Lock接口提供的synchronized关键字不具备的主要特性表5-2 Lock的API队列同步器5.2.1 队列同步器的接口与示例表5-3 同步器可重写的方法表5-4 同步器提供的模板方法代码清单5-2 Mutex.java队列同步器的实现分析1. 同步队列表5-5 节点的属性类型与名称以及描述2. 独占式同步状态获取与释放代码清单5-3 同步器原创 2020-07-02 19:41:31 · 1306 阅读 · 0 评论 -
《Java并发编程的艺术》之 Java并发编程基础
《Java并发编程的艺术》之 Java并发编程基础文章目录《Java并发编程的艺术》之 Java并发编程基础线程简介什么是线程代码清单4-1 MultiThread.java解析为什么要使用多线程更多的处理器核心更快的响应时间线程优先级代码清单4-2 Priority.java结果注意参数解析线程的状态注意Daemon线程注意注意启动和终止线程构造线程代码清单4-6 Thread.java启动线程注意理解中断代码清单4-7 Interrupted.java过期的suspend()、resume()和sto原创 2020-07-01 16:39:00 · 1491 阅读 · 0 评论 -
《JAVA并发编程的艺术》之Java内存模型
《JAVA并发编程的艺术》之Java内存模型Java内存模型的基础并发编程模型的两个关键问题在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信。同步是指程序中用原创 2020-06-29 14:56:59 · 1758 阅读 · 1 评论 -
《JAVA并发编程的艺术》之Java并发机制的底层实现原理
《JAVA并发编程的艺术》之Java并发机制的底层实现原理java代码执行流程Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。volatile的应用在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享原创 2020-06-22 15:59:46 · 1089 阅读 · 0 评论 -
《JAVA并发编程的艺术》之并发编程的挑战
《JAVA并发编程的艺术》之并发编程的挑战文章目录《JAVA并发编程的艺术》之并发编程的挑战上下文切换**时间片**上下文切换多线程一定比单线程执行快吗测试代码个人测试结果作者结果结论测试上下文切换次数和时长工具如何减少上下文切换方法减少上下文切换实战通过减少线上大量WAITING的线程,来减少上下文切换次数。windows的朋友可以直接打开jdk目录下的Java VisualVM.exe作者Linux环境下方法如下死锁测试代码查看是否死锁避免死锁的常见方法资源限制的挑战相关问题什么是资源限制资源限制引发原创 2020-06-21 00:53:39 · 1131 阅读 · 0 评论