文章分类 - 分布式与高并发1-分布式并发编程
分布式与高并发
摘要:ConcurrentHashMap 的初步使用及场景 CHM 的使用 ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以 ConcurrentHashMap 在并发编程的场景中使用的频率比较高,那么这一节课我们就从 ConcurrentHas
阅读全文
摘要:线程池 在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足 线程池的核心逻辑是提前创建好若干个线
阅读全文
摘要:阻塞队列的使用案例 注册成功后增加积分:假如我们模拟一个场景,就是用户注册的时候,在注册成功以后发放积分。这个场景在一般来说,我们会这么去实现。 但是实际上,我们需要考虑两个问题 1. 性能,在注册这个环节里面,假如添加用户需要花费 1 秒钟,增加积分需要花费 1 秒钟,那么整个注册结果的返回就可能
阅读全文
摘要:countdownlatch countdownlatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完毕再执行。从命名可以解读到 countdown 是倒数的意思,类似于我们倒计时的概念。countdownlatch 提供了两个方法,一个是 countDown,一个是
阅读全文
摘要:J.U.C 简介 Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。 Lock 简介 在 Lock 接口出现之前,Java 中的应用程序对于多线程的并发安全处理只能基于synchron
阅读全文
摘要:volatile 的作用:保证内存可见性,但不保证并发正确性 在多线程环境下,读和写发生在不同的线程中的时候,可能会出现:读线程不能及时的读取到其他线程写入的最新的值。这就是所谓的可见性为了实现跨线程写入的内存可见性,可以使用到一些volatile机制来实现。 1.1 用途 具有synchroniz
阅读全文
摘要:线程让步 Yield : 线程从运行进入就绪状态 + 不释放锁 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又
阅读全文
摘要:Synchronized 结合 Java Object 对象中的wait,notify,notifyAll 学习synchronized时候 ,发现被阻塞的线程什么时候被唤醒,取决于获得锁的线程什么时候执行完同步代码块并且释放锁。那怎么做到显示控制呢?我们就需要借助一个信号机制 : 在 Object
阅读全文
摘要:一. 多线程对于共享变量访问带来的安全性问题 对于线程安全性,本质上是管理对于数据状态的访问,而且这个这个状态通常是共享的、可变的。共享,是指这个数据变量可以被多个线程访问;可变,指这个变量的值在它的生命周期内是可以改变的。一个对象是否是线程安全的,取决于它是否会被多个线程访问,以及程序中是如何去使
阅读全文
摘要:进程 进程的本质是一个正在执行的程序,程序运行时系统会创建一个进程,并且给每个进程分配独立的内存地址空间保证每个进程地址不会相互干扰。同时,在 CPU 对进程做时间片的切换时,保证进程切换过程中仍然要从进程切换之前运行的位置出开始执行。所以进程通常还会包括程序计数器、堆栈指针。 有了进程以后,可以让
阅读全文

浙公网安备 33010602011771号