随笔分类 - Concurrency
摘要:
早期的计算机中由于CPU和内存的速度是差不多的,所以CPU是直接访问内存地址的。而在现代计算机中,CPU指令的运行速度远远超过了内存数据的读写速度,为了降低这两者间这高达几个数量级的差距,所以在CPU与主内存之间加入了CPU高速缓存。
阅读全文

摘要:
首先Java里的线程利用的线程模型是KLT,这带来了许多好处,比如线程的阻塞不会带来进程的阻塞,能更加高效地利用CPU的资源等。但这也意味着在Java里的线程的创建和销毁是一个相对偏且消耗资源的操作...
阅读全文

摘要:前言 Synchronized 是常被我们用来保证临界区以及临界资源安全的解决方案。它可以保证当有多个线程访问同一段代码,操作共享数据时,其他线程必须等待正在操作线程完成数据处理后再进行访问。即 Synchronized 可以达到线程互斥访问的目的。 所以,我们可以了解到,Synchronized锁
阅读全文
摘要:
对于 final 域,编译器和处理器要遵守两个重排序规则。
1)在构造函数内对一个 final 域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序;
2)初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序。
阅读全文

摘要:对于很多刚接触编程的人来说,对于线程中断和线程阻塞两个概念,经常性是混淆起来用,单纯地认为线程中断与线程阻塞的概念是一致的,都是值线程运行状态的停止。其实这个观点是错误的,两者之前有很大的区别,下文就着重介绍两者之间的区别。 线程中断 在一个线程正常结束之前,如果被强制终止,那么就有可能造成一些比较
阅读全文
摘要:
本文主要会从 Lock 接口到 AQS 抽象类的 API 以及源码分析 Java 中锁的实现,通过演示相关组件的代码 Demo 了解其使用,以及了解如何通过 AQS 实现一个锁。
阅读全文
