随笔分类 -  多线程

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