并发编程
文章平均质量分 91
这里主要记录Java多线程基础、并发API使用以及源码、并发实战相关的知识
MarkusZhang
水之积也不厚,则其负大舟也无力。
展开
-
CompletableFuture使用与原理解析
在并发编程中,我们一般会使用Runnable编写任务的内容然后提交给线程池交由线程池调度线程执行。这种情况我们通常是针对不关心任务执行的结果,但如果关心任务执行的结果,并且根据执行结果执行后续的动作,这个时候就需要配合使用Callable+Future来实现了,其中Callable关注异步任务的执行,而Future则关注异步任务的执行结果,它提供了方法来检查任务是否完成,并在完成后获取结果。} });原创 2023-09-12 23:52:00 · 127 阅读 · 0 评论 -
ThreadLocal深度解析
在并发编程中,导致并发bug的问题都会归结于对共享变量的操作不当。多个线程同时读写同一共享变量存在并发问题,我们可以利用写时复制、不变性来突破对原数据的写操作,没有写就没有并发问题,而本篇文章所介绍的技术是突破共享变量,没有共享变量也不会有并发问题。Java中避免线程共享的一大利器就是ThreadLocal,我们本篇文章重点讲述它的底层原理、常见的一些用途、创建和使用等。是 Java 的一个类,位于java.lang包下。原创 2023-08-21 23:53:17 · 714 阅读 · 1 评论 -
信号量与管程
我们知道,在并发领域内,需要关注分工、同步与互斥,针对分工问题,就是将任务拆解,分配给多个线程执行,而在多线程执行的过程中,需要解决线程之间的协作与互斥问题进而保证并发安全。那么解决这类问题的方案是什么呢?没错就是信号量和管程。信号量的概念是由荷兰计算机科学家Edsger W. Dijkstra在1960年引入的。Dijkstra引入了P(Proberen,荷兰语中的"try")和V(Verhogen,荷兰语中的"increment")这两个操作,并使用它们来解决各种同步问题,如著名的哲学家进餐问题。原创 2023-08-19 16:14:31 · 256 阅读 · 0 评论 -
并发编程之死锁问题介绍
死锁问题在并发编程中是一个非常致命的问题,问题一旦产生,只能通过重启机器、修改代码来修复问题,本篇我们通过一小段内容介绍下死锁以及如何死锁的预防原创 2023-02-26 15:44:39 · 1154 阅读 · 2 评论 -
有关性能的一些小知识
文章目录有关性能的一些思考JMH测试机器环境HashMap、ConcurrentHashMap、Collections.synchronizedMap(new HashMap())CopyOnWriteArrayList、ConcurrentLinkedQueue有关性能的一些思考性能是一个重要且很复杂的话题。简单来说,性能调优就是要加快系统的执行,因此就是要尽可能使用执行速度更快的组件。那到底哪个组件更快,哪个方法更快?看似简单的问题却是没有答案的。在大部分场景中,并没有绝对的快和慢。性能需要从不同角原创 2021-12-04 23:01:04 · 1142 阅读 · 0 评论 -
Java进阶|JUC系列(持续更新)
文章目录1、什么是J.U.C2、进程、线程、协程2.1 简介2.2 线程有几个状态2.3 wait和sleep的区别3、Lock锁(重点)3.1 简介3.2 lock锁和synchronized有什么区别4、生产者和消费者问题4.1 简介4.2 使用synchronized实现的demo4.3使用Lock实现的demo1、什么是J.U.CJUC全称就是 Java.util.concurrent,我们去jdk1.8帮助文档看看2、进程、线程、协程2.1 简介进程:是应用程序的启动实例,进程拥有打开原创 2020-05-27 11:45:47 · 4766 阅读 · 0 评论