java 中使用 锁的含义、使用方式场景及锁之间的区别与联系,缺点与优点

学习目标:

目标

  • 了解 java 中使用 锁 的含义、使用方式场景及锁之间的区别与联系,缺点与优点。

学习内容:

内容

  1. 在 Java 中,锁是一种并发编程中控制多个线程对共享资源访问的机制。

  2. 锁的主要作用:
    确保在同一时刻只有一个线程能够访问共享资源,从而避免数据竞争和并发访问导致的问题。

  3. Java 中的锁主要有以下几种使用方式和场景:

(1). synchronized 关键字:通过在方法或代码块前加上关键字 synchronized 来实现对代码块的同步访问,确保同一时刻只能有一个线程执行该代码块。

(2)@. ReentrantLock 类:是 Java.util.concurrent 包下的一个锁实现类,相比 synchronized 更加灵活,在使用时需要显式地加锁和解锁。

(3). ReadWriteLock 接口:对于读多写少的场景,可以使用 ReadWriteLock 接口下的实现类 ReentrantReadWriteLock,提高并发性能。

  1. 锁之间的区别与联系主要体现在以下几个方面:

(1). 易用性:synchronized 是 Java 中最简单直接的锁实现,而 ReentrantLock 在某些特定场景下提供了更多的控制选项。两者的区别在于使用方式和功能强大程度上有所不同。

(2). 可重入性:ReentrantLock 是可重入锁,同一线程可以多次获取同一把锁,而 synchronized 是非可重入锁。

(3). 扩展性:ReentrantLock 提供了更多的功能和特性,例如公平锁、可中断锁、超时锁等,而 synchronized 的功能相对受限。

(4). 性能:在一些场景下,ReentrantLock 的性能可能比 synchronized 更好,但在大多数场景下二者性能差异不大。

  1. 锁的优点:
  • 防止多个线程同时访问共享资源,避免数据竞争导致的问题。
  • 提高程序的并发性能,充分利用多核处理器,提高程序执行效率。
  1. 锁的缺点:
  • 可能引起死锁问题,需要合理设计锁的获取顺序。
  • 使用不当可能导致性能问题,例如锁粒度太大或太小都会影响程序性能。
  • 可能造成线程之间的竞争和性能下降。

知识小结:

小结:

  • [x]1、 Java中的锁主要用于控制多个线程访问共享资源的方式。

  •       锁可以确保线程之间的同步,保证共享资源的一致性和可见性。
    
  • [x]2、使用方式场景:

     (1).当多个线程需要访问共享资源时,可以使用锁来保证同一时刻只有一个线程能修改共享资源。
     
     (2).当需要保证操作的原子性时,可以使用锁来避免并发问题。
     
     (3).当需要保证线程之间的有序性或者互斥性时,也可以使用锁。
    
  • [x]3、锁之间的区别与联系:

     (1).乐观锁与悲观锁:这是一种思想,乐观锁通常用于解决写冲突,悲观锁用于解决读冲突。
     
     (2).公平锁与非公平锁:公平锁保证了多个线程按照请求锁的顺序获取锁,而非公平锁可以在任何时刻被获取。
     
     (3).可重入锁(递归锁):一个线程可以多次获取同一个锁。
     
     (4).共享锁和独占锁:共享锁允许多个线程同时获取锁,独占锁一次只能被一个线程获取。
     
     (5).读写锁:读写锁可以分为读锁和写锁,多个线程可以同时持有读锁,但只能有一个线程持有写锁。
    
  • [x]4、锁的缺点与优点:

    4.1 优点:

    (1)解决线程同步问题

    (2)保证数据的一致性和可见性

    (3)控制并发操作

    4.2 缺点:

    (1)性能开销:加锁和解锁会消耗CPU资源

    (2)死锁:多个锁之间的不当使用可能导致死锁问题

  • [x]5、复杂性增加:锁的使用可能会使代码变得更加复杂和难以理解

注意:在选择锁的使用方式时,需要根据具体场景和需求来选择合适的锁,并注意避免常见的并发问题,如死锁和活锁等。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值