
JVM
Java虚拟机
贝贝378
这个作者很懒,什么都没留下…
展开
-
Redis实现分布式锁及其应用场景
Redis实现分布式锁的原理是通过在Redis中创建一个key-value对,其中key为锁的名称,value为锁的值。当一个进程或线程需要获取锁时,它会向Redis发送一个SETNX命令,如果该命令返回1,则表示获取锁成功,否则获取锁失败。当一个用户下单时,它会尝试获取库存锁,如果获取成功,则可以继续下单,否则需要等待其他用户完成下单后再尝试获取锁。当一个任务开始执行时,它会尝试获取任务锁,如果获取成功,则可以执行任务,否则跳过任务。当任务执行完成后,会释放锁,其他任务就可以获取锁并执行。原创 2023-04-13 15:49:18 · 2922 阅读 · 0 评论 -
System.out.println()影响系统运行效率!!!
当程序中存在大量的System.out.println()语句时,代码会变得冗长而难以维护,同时也会降低代码的可读性。首先,System.out.println()的输出操作需要占用CPU和内存资源,因为它会将数据写入缓存区中,然后再输出到控制台。在Java开发中,System.out.println()是一种常用的输出方式,可以将字符串输出到控制台。System.out.println()虽然是一种方便的输出方式,但在实际开发中需要注意其对系统运行效率的影响,合理使用输出语句,避免程序运行效率降低。原创 2023-04-12 09:36:56 · 3419 阅读 · 0 评论 -
JAVA线程锁机制是怎样的?偏向锁、轻量级锁、重量级锁有什么区别?锁机制是如何升级的?三、线程锁机制是怎样的?偏向锁、轻量级锁、重量级锁有什么区别?锁机制是如何升级的?
1.Java的锁就是在对象的Markword中记录一个锁状态,无锁、偏向锁、轻量级锁、重量级锁对应不同的锁的状态。2.偏向锁、轻量级锁都是由JVM进行管理的,重量级锁是由操作系统进行管理的。3.Java的锁机制就是根据资源竞争的激烈程度不断进行锁升级的过程。原创 2023-02-16 15:44:24 · 143 阅读 · 0 评论 -
Volatile和Synchronized有什么区别?Volatile能不能保证线程安全?DCL(Double Check Lock)单例为什么要加Volatile?
指令重排就是原本我们new对象时按照1->2->3的顺序进行的,在进行编译时顺序就可能变成1->3->2,这种情况下在单线程模式下一般不会出现问题,但在多线程情况下可能在进行完1->3时另一个线程出现使用这个还未初始化的对象,这样就会出现线程安全问题。1.Synchronized关键字是用来加锁的,Volatile只是保持变量的线程可见性,通常适用于一个线程写,多个线程读的场景。2.Volatile关键字不能保证线程安全,因为volatile只能保证线程的可见性,不能保证原子性。3.建立指针对应关系。原创 2023-02-16 14:42:31 · 262 阅读 · 0 评论