随笔分类 -  JAVA-并发编程

摘要:package abc3; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; cl 阅读全文
posted @ 2024-12-12 11:11 chenxiangxiang 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题目: 按顺序打印 ABC ABC ABC ...。有这么一个多线程场景问题:有三个线程,线程1执行(输出A)完成之后线程2执行(输出B),线程2执行完之后线程3执行(输出C),线程3执行完成之后线程1执行...,整体循环50次,写程序实现。 算法思路:要求按照顺序打印,即A、B、C轮流打印,每个字 阅读全文
posted @ 2024-12-12 10:10 chenxiangxiang 阅读(105) 评论(0) 推荐(0) 编辑
摘要:AQS源码分析--哔哩哔哩(通俗易懂) AQS实现原理看这一篇就够了 阅读全文
posted @ 2023-05-03 21:57 chenxiangxiang 阅读(23) 评论(0) 推荐(0) 编辑
摘要:深入分析Synchronized原理(阿里面试题) 面试官:请详细说下synchronized的实现原理 阅读全文
posted @ 2022-05-08 22:51 chenxiangxiang 阅读(23) 评论(0) 推荐(0) 编辑
摘要:https://zhuanlan.zhihu.com/p/94762520 阅读全文
posted @ 2022-05-08 21:52 chenxiangxiang 阅读(16) 评论(0) 推荐(0) 编辑
摘要:在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的错误代码: public class Singleton { private static Singleton uniqueSingleton; private Singleton() { } public Singleton getInst 阅读全文
posted @ 2021-04-16 10:50 chenxiangxiang 阅读(369) 评论(0) 推荐(0) 编辑
摘要:之前写过一篇 Java 线程池的使用介绍文章《线程池全面解析》,全面介绍了什么是线程池、线程池核心类、线程池工作流程、线程池分类、拒绝策略、及如何提交与关闭线程池等。 但在实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。 如果你想监控某一个线程池的执行状态, 阅读全文
posted @ 2019-03-12 18:00 chenxiangxiang 阅读(1044) 评论(0) 推荐(0) 编辑
摘要:13. 线程池 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定 阅读全文
posted @ 2019-02-25 19:38 chenxiangxiang 阅读(336) 评论(0) 推荐(0) 编辑
摘要:8. 生产者消费者案例-虚假唤醒 参考下面生产者消费者案例: 当多个生产者、消费者同时响应资源时,程序输出如下(商品数出现负数): 原因如下,即产生了虚假唤醒: 解决方法在jdk的wait()方法里已经声明,即需要把wait()方法放在循环里(生产者方法也同下) 9. Condition 线程通信 阅读全文
posted @ 2019-02-25 19:37 chenxiangxiang 阅读(544) 评论(0) 推荐(0) 编辑
摘要:5. CountDownLatch 闭锁 Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。 CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线程的进度直到其 阅读全文
posted @ 2019-02-25 19:36 chenxiangxiang 阅读(262) 评论(0) 推荐(0) 编辑
摘要:1. volatile 关键字与内存可见性 原文地址: https://www.cnblogs.com/zjfjava/category/979088.html 内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状 阅读全文
posted @ 2019-02-25 19:35 chenxiangxiang 阅读(461) 评论(0) 推荐(0) 编辑
摘要:阅读目录 使用 阅读目录 使用 背景:ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行;当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。这种思想值得学习。 主要参考《疯狂java讲义》 阅读全文
posted @ 2018-11-14 17:07 chenxiangxiang 阅读(419) 评论(0) 推荐(0) 编辑
摘要:我在《jdk1.5引入的concurrent包》中,曾经介绍过CountDownLatch、CyclicBarrier两个类,还给出了CountDownLatch的演示案例。这里再系统总结下Java并发编程中的4个类CountDownLatch、CyclicBarrier、Semphore、Phas 阅读全文
posted @ 2018-10-16 14:41 chenxiangxiang 阅读(1019) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch介绍 CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计数器,其内部维护着一个count计数,只不过对这个计数器的操作都是原子操作,同时只能有一个线程去操作这个计数器,CountDownLatch通过 阅读全文
posted @ 2018-05-18 16:08 chenxiangxiang 阅读(603) 评论(0) 推荐(0) 编辑
摘要:FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果,因此,FutureTask非常适合用于耗时的计算,主线 阅读全文
posted @ 2018-05-18 13:50 chenxiangxiang 阅读(6186) 评论(0) 推荐(0) 编辑
摘要:countdownlatch是java多线程包concurrent里的一个常见工具类,通过使用它可以借助线程能力极大提升处理响应速度,且实现方式非常优雅。今天我们用一个实际案例和大家来讲解一下如何使用以及需要特别注意的点。 由于线程类的东西都比较抽象,我们换一种讲解思路,先讲解决问题的案例,然后再解 阅读全文
posted @ 2018-05-18 13:48 chenxiangxiang 阅读(705) 评论(0) 推荐(0) 编辑
摘要:关于线程同步(7种方式) 为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法 即有syn 阅读全文
posted @ 2018-03-09 21:03 chenxiangxiang 阅读(14461) 评论(1) 推荐(0) 编辑
摘要:1 1. 空中网面试题1 2 3 package com.kongzhongwang.interview; 4 5 import java.util.concurrent.ArrayBlockingQueue; 6 import java.util.concurrent.BlockingQueue; 7 8 //myeclipse强大功能:将代码直接复制到项... 阅读全文
posted @ 2017-01-08 13:51 chenxiangxiang 阅读(353) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示