
多线程
文章平均质量分 52
CaptainCats
悟已往之不谏、知来者之可追。
展开
-
Java分布式锁
Java分布式锁 我的理解应该叫集群锁或者跨实例锁 锁的作用是在多线程情况下,控制线程同步访问变量,执行代码块、方法, 例如synchronized,在单个jvm进程中,这样是奏效的。 但是在分布式环境中,单个服务往往都是要部署多台实例的, 在有多个jvm进程的集群里,synchronized就达不到我们的要求了。 synchronized只能控制当前jvm进程中的线程,对于其它jvm进程中的线程,它无能为力。 也就是说有可能一个jvm中的线程是同步执行的,在此过程中, 或许会有集群里其它jvm的线程执行到原创 2021-08-27 19:54:52 · 2358 阅读 · 0 评论 -
Java多线程-03.Semaphore、Exchanger
Semaphore 信号灯 package com.duohoob.jvm.thread; import java.util.concurrent.Semaphore; /** * 信号灯 * @author yangwei * */ public class SemaphoreTest { public static void main(String[] args) { Semaphore semaphore = new Semaphore(2); // permits=2,允许最多两原创 2021-08-06 19:03:10 · 126 阅读 · 0 评论 -
Java多线程-02.CountDownLatch、CyclicBarrier、Phaser
CountDownLatch 门栓 package com.duohoob.jvm.thread; import java.util.concurrent.CountDownLatch; /** * 门栓 * @author yangwei * */ public class CountDownLatchTest { static void m() { // 10个线程 Thread[] threads = new Thread[10]; // 倒数计数门栓 Count原创 2021-08-06 19:02:36 · 189 阅读 · 0 评论 -
Java多线程-01.ReentrantLock、ReadWriteLock
CAS compare and set cas(V, expected, newValue) 我们要修改V的值为newValue,如果它是我们期望的值expected,则修改, 否则重新比较或失败。 CAS是CPU层面的支持,不会被打断。 开发工作中,如果需要频繁地加synchronized锁,可以通过原子的Atomic类来实现, 这些Atomic开头的类的内部自动就带了锁,当然这些锁挺不是重量级synchronized锁, 而是通过CAS操作来实现的(号称无锁)。 AtomicInteger就是concu原创 2021-08-05 20:44:04 · 263 阅读 · 0 评论 -
Java多线程-00.线程
概念 进程process 进程是操作系统进行资源分配的基本单位。 线程thread 线程是CPU调度执行的基本单位, 进程是线程的容器, 每个线程都有自己的线程栈和寄存器环境。 主线程与子线程 jvm启动时会创建一个主线程,负责执行main方法; 如果在线程a中创建了线程b,称线程b为线程a的子线程。 线程的创建 有继承Thread类、实现Runnable接口、实现Callable接口、线程池、lambda表达式等。 ThreadCreate package com.duohoob.jvm.thread;原创 2021-08-04 23:50:18 · 110 阅读 · 0 评论