首页编程java编程java 读锁有什么用 Java:读锁的作用在哪里呢

java 读锁有什么用 Java:读锁的作用在哪里呢

编程之家2023-10-1382次浏览

很多朋友对于java 读锁有什么用和Java:读锁的作用在哪里呢不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

java 读锁有什么用 Java:读锁的作用在哪里呢

Java中有哪些锁,区别是什么

【1】公平所和非公平所。

公平锁:是指按照申请锁的顺序来获取锁,

非公平所:线程获取锁的顺序不一定按照申请锁的顺序来的。

java 读锁有什么用 Java:读锁的作用在哪里呢

//默认是不公平锁,传入true为公平锁,否则为非公平锁

ReentrantLock reentrantLock= new ReetrantLock();

1

java 读锁有什么用 Java:读锁的作用在哪里呢

2

【2】共享锁和独享锁

独享锁:一次只能被一个线程所访问

共享锁:线程可以被多个线程所持有。

ReadWriteLock读锁是共享锁,写锁是独享锁。

【3】乐观锁和悲观锁。

乐观锁:对于一个数据的操作并发,是不会发生修改的。在更新数据的时候,会尝试采用更新,不断重入的方式,更新数据。

悲观锁:对于同一个数据的并发操作,是一定会发生修改的。因此对于同一个数据的并发操作,悲观锁采用加锁的形式。悲观锁认为,不加锁的操作一定会出问题,

【4】分段锁

1.7及之前的concurrenthashmap。并发操作就是分段锁,其思想就是让锁的粒度变小。

【5】偏向锁是指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁。降低获取锁的代价

轻量级锁

重量级锁

【6】自旋锁

自旋锁

Java:读锁的作用在哪里呢

首先,并没有单独的“读锁”,都是读写锁一起用的。如果一个数据是只读的,根本就不用锁了。。。

其次,锁只有被正确地使用才能发挥作用。以读写锁为例,如果当前线程只读不写,那就可以拿读锁;而如果有写的可能,就要拿写锁。如果程序员硬要在拿读锁的线程里写数据,那么就会导致竞争条件和不可预知的运行结果。

换句话说,读锁本身并不能阻止写操作,甚至根本没有机制强制程序员用锁-不用锁而访问共享数据的代码当然也是可以编译运行的,只不过同样会导致竞争条件和不可预知的运行结果。

Java多线程中,锁是什么,所谓的获取锁是什么意思

简单的跟你讲一下,当有多个线程使用同一个资源的时候,为了避免死锁,往往在一个线程在使用一个资源的时候给这段代码一个锁(也就是说我在操作的时候别人都不能动),在执行完后再把这个锁放开(这时候别的线程就可以使用该资源了)。

java/c/c++等高级语言,读操作需要加锁吗

java web的话是不需要的,因为每次request请求通过servlet的时候servlet会开启新的线程来执行代码,现在web项目都是使用spring容器的,spring会对线程使用threadlocal,这样会把类中的变量为每个线程复制一份,所以当并发时不会因为未加锁影响其它线程。当然不是绝对的,如果是操作静态变量,应该是要加锁的。

c、c++的话我不是做这个的所以不太了解,就不乱说了。

OK,本文到此结束,希望对大家有所帮助。

java2ee学到什么程度 大学毕业之后java能学到什么程度清理垃圾一键全部清除(手机免费清理垃圾一键全部清除)