`
NEO_ONE
  • 浏览: 48656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

轻量级synchronized

    博客分类:
  • Java
阅读更多
后台admin给用户加分,点的快了,会加两次分,在前台没限制的情况下,后台又不想用synchronized可以有两种解决办法


自己模块的util类加个 volatile的static变量
 public static volatile isRunning = false;//静态变量,默认加分操作未进行


加分逻辑代码:

if(util.isRunning==false){
util.isRunning = true;//加分操作就在进行中了...
//逻辑代码
util.isRunning = false;//标志重新设定
}else{
//正在加分,这里就什么都不做
}



第二种,用AtomicBoolean

模块util类加上,
 public static AtomicBoolean isRunning  = new AtomicBoolean(false);//未执行的标志


加分逻辑代码:

if(util.AtomicBoolean.compareAndSet(false, true)){
//其实跟上边没啥两样,就是貌似看起来专业点...isRunning==false这时候执行逻辑
util.isRunning.set(false);//最后逻辑执行完了,再把标志设回false
}else{
//do nothing
}


util.AtomicBoolean.compareAndSet(false, true)只不过节省了util.isRunning = true;这句代码
分享到:
评论

相关推荐

    java 偏向锁、轻量级锁及重量级锁synchronized原理.docx

    总的来说,Java的`synchronized`通过对象头的Mark Word和Monitor对象实现了线程安全的同步机制,同时引入了偏向锁、轻量级锁和自旋锁等优化手段,以平衡性能和线程安全性。理解这些锁的工作原理对于编写高性能的并发...

    Java轻量级锁(自旋锁)和偏向锁原理

    很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,...

    偏向锁-轻量级锁-重量级锁

    本文将详细解析Java中的偏向锁、轻量级锁和重量级锁,这些都是JVM为了提高并发性能而实现的锁优化策略。 首先,我们从最简单的偏向锁开始。**偏向锁**的设计理念是假设大多数情况下,锁都不会被多个线程竞争。当一...

    【Java面试】为什么引入偏向锁、轻量级锁,介绍下升级流程.doc

    需要将锁升级到轻量级锁,在轻量级锁状态下,竞争锁的线程根据自适应自旋次数去尝试抢占锁资源,如果在轻量级锁状态下还是没有竞争到锁,就只能升级到重量级锁,在重量级锁状态下,没有竞争到锁的线程就会被阻塞,...

    Java锁的升级策略 偏向锁 轻量级锁 重量级锁

    轻量级锁的特点是:采用了CAS操作加锁和解锁,由于轻量级锁的锁记录(Lock Record)是存放在对象头和线程空间里的,因此加锁和解锁不需要上下文切换,性能消耗较小。如果发生多线程竞争,轻量级锁会膨胀为重量级锁。轻...

    Java synchronized使用案例

    4. **锁膨胀**:如果同步代码块的性能瓶颈导致CPU开销过大,JVM会将轻量级锁升级为重量级锁(监视器锁),这可能导致性能下降。 四、`synchronized`与其他并发工具类的对比 1. **ReentrantLock**:具有`...

    volatile和synchronized的区别

    - 对于简单的状态变量(如标志位)的可见性保证,推荐使用`volatile`,因为它更轻量级且性能更好。 - 当需要实现互斥访问或复合操作的原子性时,应选择使用`synchronized`。 - 在不确定如何选择时,优先考虑`...

    【Java并发编程】Synchronized关键字实现原理.doc

    轻量级锁流程是指 Java 虚拟机在运行时对锁的轻量级流程。 4.6、轻量级锁升级重量级锁 轻量级锁升级重量级锁是指 Java 虚拟机在运行时对锁的升级流程。 4.7、重量级锁流程 重量级锁流程是指 Java 虚拟机在运行时...

    synchronized关键字的实质及用法

    例如,从偏向锁到轻量级锁再到重量级锁的升级,目的是在大多数没有竞争的情况下减少锁带来的开销。 7. **ReentrantLock** Java 5引入了`java.util.concurrent.locks.ReentrantLock`,它提供了与`synchronized`...

    Synchronized关键字的用法

    初始状态下使用偏向锁,当多个线程竞争时升级到轻量级锁,进一步升级为重量级锁。 #### 示例代码 ```java public class SyncExample { private int count = 0; // 同步实例方法 public synchronized void ...

    15 原子性轻量级实现—深入理解Atomic与CAS.pdf

    总结来说,`Atomic`类和CAS算法是Java并发编程中保证原子性的重要工具,它们为开发者提供了轻量级的同步机制,以应对特定的并发场景,避免了`synchronized`关键字的全局锁带来的性能损失。了解和熟练使用这些工具,...

    手写synchronized

    使用java模拟synchronzed的过程,模拟从无锁->偏向锁->轻量级锁->重量级锁->挂起->唤醒->继续抢锁,再模拟了各阶段的锁释放。(此代码不能运行,因为很多c++中的机制在java中不能实现)此代码仅用于学习synchronized的...

    [JAVA][synchronized的使用]

    - **volatile**:相比`synchronized`,`volatile`关键字轻量级且快速,但只适用于变量的读写操作,无法保证复合操作的原子性。 - **ReentrantLock**:是Java并发包`java.util.concurrent.locks`中的可重入锁,提供...

    Java synchronized那点事.doc

    这篇文档主要探讨了Java synchronized的锁机制,包括锁粗化、偏向锁、轻量级锁、重量级锁以及锁升级的过程。 1. 锁粗化: 锁粗化是编译器或运行时环境为了减少锁的使用频率,将多个连续的同步块合并成一个大的同步...

    tinylog:A lightweight C,C++ log component developed for Linux, It is designed with high performance, asynchronized, thread-safe and process-safe; tinylog是一个专为UNIX设计的轻量级的CC++日志模块,其提供了高性能,异步,线程安全,进程安全的日志功能

    Tinylog是用于UNIX环境的轻量级C语言高性能日志组件,它是用于C / C ++的高性能,异步,线程安全和进程安全的日志库。 它支持日志归档,异步,多线程写入,多处理写入,非阻塞模式。 输出示例: [ 2018 - 04 - 03...

    java synchronized demo

    - 从Java 5开始,JVM对`synchronized`进行了很多优化,如偏向锁、轻量级锁、自旋锁等,使得在低负载情况下,同步操作的性能得到了显著提升。 9. **示例代码分析**: 根据提供的文件名,`GenerateCode.java`可能...

    第15讲 synchronized和ReentrantLock有什么区别呢?1

    除了了解基本使用和案例外,深入理解它们的底层实现,如锁膨胀、降级,以及轻量级锁、重量级锁、自旋锁和偏斜锁等概念,对于成为一个合格的Java并发开发者至关重要。同时,掌握java.util.concurrent.locks包中的其他...

    第16讲 synchronized底层如何实现?什么是锁的升级、降级?1

    2. **轻量级锁(Lightweight Locking)**:当多线程竞争同一对象的锁时,如果发现对象尚未被锁定(即没有线程拥有偏斜锁),JVM 会使用 CAS(Compare and Swap)操作尝试将锁升级为轻量级锁。轻量级锁通过在对象头的...

    第16讲synchronized底层如何实现?什么是锁...1

    2. **轻量级锁**:在轻量级锁的状态下,如果多个线程尝试获取已被锁定的对象,JVM会使用CAS(Compare And Swap)操作尝试无锁同步。如果CAS成功,线程获得锁,继续执行;如果失败,说明存在竞争,轻量级锁将升级为...

    Java 并发编程学习笔记之Synchronized底层优化

    Java并发编程中的Synchronized是Java实现线程同步的关键机制,其在JDK1.6之后进行了大量的优化,包括引入了轻量级锁和偏向锁,以提升并发性能。以下是关于这些优化的详细解释: **一、重量级锁** 重量级锁是基于...

Global site tag (gtag.js) - Google Analytics