随笔分类 - 多线程
摘要:阻塞队列的应用场景 阻塞队列这块的应用场景,比较多的仍然是对于生产者消 费者场景的应用,但是由于分布式架构的普及,是的大家 更多的关注在分布式消息队列上。所以其实如果把阻塞队 列比作成分布式消息队列的话,那么所谓的生产者和消费 者其实就是基于阻塞队列的解耦。 另外,阻塞队列是一个 fifo 的队列,
阅读全文
摘要:Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三
阅读全文
摘要:protected final boolean compareAndSetState(int expect, int update) { // See below for intrinsics setup to support this return unsafe.compareAndSwapInt
阅读全文
摘要:ReentrantLock:表示重入锁,它是唯一一个实现了Lock接口的类。重入锁指的是 线程在获得锁之后,再次获取该锁不需要阻塞,而是直接关联一次计数器增加重入次; syschronized和reenttrantlock都支持重入锁; 重入锁的设计目的 比如调用demo方法获得了当前的对象锁,然后
阅读全文
摘要:volatile通过lock(实现了内存屏障规则)内存屏障禁止指令重排保证了可见性; 从硬件层面了解可见性的本质 一台计算机中最核心的组件是CPU、内存、以及I/O设备。 在整个计算机的发展历程中,除了CPU、内存以及I/O设 备不断迭代升级来提升计算机处理性能之外,还有一个非 常核心的矛盾点,就是
阅读全文
摘要:线程是否安全定义: 一个对象是否是线程安全的,取决于它是否会被多个线程 访问,以及程序中是如何去使用这个对象的。所以,如果 多个线程访问同一个共享对象,在不需额外的同步以及调 用端代码不用做其他协调的情况下,这个共享对象的状态 依然是正确的(正确性意味着这个对象的结果与我们预期 规定的结果保持一致)
阅读全文
摘要:https://blog.csdn.net/vtopqx/article/details/78364685 多线程内存模型
阅读全文
摘要:https://www.jianshu.com/p/8de8c6a839e8 public class Automic1 { //AtomicInteger解决不了ABA问题,ABA问题可能在业务场景下会导致问题,例如一个人去取款,取款机因为特殊原因启动了两个线程,其中一个线程执行扣减成功,本来10
阅读全文
摘要:CountDownLatch: CountDownLatch允许一个或多个线程等待其他线程完成操作; CountDownLatch需要指定一个整数值,此值是线程将要等待的操作数,当减为0时,才会唤醒所有await的线程,一个countdownlatch只能用一次 public class Count
阅读全文
摘要:Synchronized是由JVM实现的一种互斥同步的一种方式,如果查看Synchronized修饰过的程序块编译后的字节码,会发现,被Synchronized修饰过的程序块,在编译前后被编译器生成了monitorenter和monitorexit两个字节码指令; 这两个指令的含义:在虚拟机执行到m
阅读全文

浙公网安备 33010602011771号