前言 以前一直用redis作为分布式锁的实现,也知道zookeeper可以实现,但是对于分布式锁没有系统梳理,忽略了数据库作为分布式锁的重要应用,本文主要梳理分布式锁实现的主要思路: 按照加锁位置,分为在应用层,缓存层,…
分类:java并发
JAVA对象锁与类锁
1、被syncronized修饰的方法,是对类的对象加锁,也就是说,当对象访问该方法时,当前的对象会被加锁,同一时刻同一对象不能再访问该方法,或者该对象的其他被syncronized修饰的方法。不同对象,同一时刻可以访问…
Java多线程系列 JUC锁06 Condition条件
Condition介绍 Condition中提供了一组类似于Object中的监视器方法。与Lock配合可以完成等待通知模式。 Lock lock = new ReentrantLock(); Condition cond…
Java线程详解
Java线程:概念与原理 一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。…
Java并发编程札记-(六)JUC线程池-05ExecutorCompletionService
CompletionService接口是将生产新的异步任务与使用已完成任务的结果分离开来的服务。生产者利用submit()提交要执行的任务。使用者利用take()获取并移除已完成的任务的返回值,并按照完成这些任务的顺序处…
Java---16---多线程---死锁
死锁: 概念: 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用。它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死…
Java中常见的锁的一些总结
Java中常见的锁类型 常见的锁分类大致有:排它锁、共享锁、乐观锁、悲观锁、分段锁、自旋锁、公平锁、非公平锁、可重入锁等。 排他锁和共享锁 synchronized就是一个排他锁,ReentrantLock也是一个排它锁…
JAVA并发-减少锁的竞争
降低锁的竞争可以提高并发程序的性能和可伸缩性,有3种方式可以降低锁的竞争: 1. 减少锁的持有时间(缩小锁的范围) 2. 降低锁的请求频率(降低锁的粒度) 3. 放弃使用独占锁,使用…
Java线程和多线程(九)——死锁
Java中的死锁指的就是一种多于两个线程永远阻塞的特殊状况。Java中的死锁状态至少需要多于两个线程以及资源的时候才会产生。这里,我写了一个产生死锁的程序,并且讲下如何分析死锁。 首先来看一下产生死锁的程序: packa…
java多线程 生产者消费者案例-虚假唤醒
package com.java.juc; public class TestProductAndConsumer { public static void main(String[] args) { Clerk cle…
Java 多线程之线程池的使用
一、 使用背景 谈到Java多线程,我们很自然的会想到并发,在编写多线程代码时,我们一般会创建多个线程,如果并发的线程数量很多,而且每个线程都是执行一个时间很短的任务就结束了,这样频繁的进行线程的创建会降低系统的效率,因…
Java并发编程札记-(三)JUC原子类-04原子方式更新引用
An object reference that may be updated atomically. The AtomicReference class provides reference objects that …