随笔分类 -  并发&多线程

摘要:一 概念 所谓原子类就是具有原子/原子操作特征的类。Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。 以 AtomicInteger 为例子来介绍。AtomicInteger 类常用方法如下 public final int get() 阅读全文
posted @ 2024-03-03 22:59 balfish 阅读(9) 评论(0) 推荐(0) 编辑
摘要:一 概述 AQS 的全称为 AbstractQueuedSynchronizer ,翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 AQS 就是一个抽象类,主要用来构建锁和同步器。 二 AQS原理 AQS 核心思想是,如果被请求的共享资源空 阅读全文
posted @ 2024-03-03 22:33 balfish 阅读(18) 评论(0) 推荐(0) 编辑
摘要:一 Unsafe介绍 Unsafe 是位于 sun.misc 包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升 Java 运行效率、增强 Java 语言底层资源操作能力方面起到了很大的作用。但由于 Unsafe 类使 Java 语 阅读全文
posted @ 2024-03-03 11:09 balfish 阅读(29) 评论(0) 推荐(0) 编辑
摘要:一 概述 Semaphore也叫信号量,在JDK1.5被引入,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。 Semaphore内部维护了一组虚拟的许可,许可的数量可以通过构造函数的参数指定。 访问特定资源前,必须使用acquire方法获得许可,如果许可数量为0,该 阅读全文
posted @ 2024-02-29 10:39 balfish 阅读(92) 评论(0) 推荐(0) 编辑
摘要:一 概述 Copy-On-Write即写时复制的容器,是一种用于程序设计中的优化策略。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对Co 阅读全文
posted @ 2017-11-10 14:56 balfish 阅读(405) 评论(0) 推荐(0) 编辑
摘要:一 概述 CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍 阅读全文
posted @ 2017-11-09 15:53 balfish 阅读(190) 评论(0) 推荐(0) 编辑
摘要:一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 你还在像上面这么用吗,太low 阅读全文
posted @ 2017-11-09 12:09 balfish 阅读(2424) 评论(0) 推荐(0) 编辑
摘要:一 概述 多线程的环境下对同一份数据进行读写,会涉及到线程安全的问题。比如一个线程读取数据的时候,另外一个线程在写数据,会导致前后数据的不一致。一个线程在写数据,另一个线程也在写,同样会导致线程前后看到的数据不一致。这时可以在读写方法加入互斥锁,任何时候只能允许一个线程的一个读或写操作,而不允许其他 阅读全文
posted @ 2017-11-08 17:55 balfish 阅读(183) 评论(0) 推荐(0) 编辑
摘要:一 概述 CountDownLatch能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。 CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就 阅读全文
posted @ 2017-07-27 14:44 balfish 阅读(280) 评论(0) 推荐(0) 编辑
摘要:一 引言 在JDK5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起 (3)如果一个优先级高的线程等待一个优先级低 阅读全文
posted @ 2017-02-20 11:37 balfish 阅读(356) 评论(0) 推荐(0) 编辑

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