-
同步11111111
查看全部 -
synchronized性质:
可重入:指的是同一线程的外层函数获得锁之后,内层函数可以直接再次获取锁。
好处:避免死锁,提升封装性
不可中断:一旦这个锁已经被别人获得了,如果我还想获得,我只能选择等待或阻塞,直到别的线程释放这个锁。如果别人永远不释放锁,那么我只能永远地等下去。
查看全部 -
1、两个线程同时访问一个对象的同步方法:一个一个执行。(加锁成功可以起到保护作用和同步效果)
2、两个线程访问的是两个对象的同步方法:同时执行。(没有起到保护作用和同步效果)
3、两个线程访问的是synchronized的静态方法:一个一个执行。
4、同时访问同步方法与非同步方法:同时执行。
5、访问同一个对象的不同的普通同步方法:一个一个执行。
6、同时访问静态synchronized和非静态synchronized方法:同时执行。
7、方法抛出异常后,会释放锁:会。
查看全部 -
Java类可能会有很多个对象,但是只有1个Class对象。
所以所谓的类锁,不过是Class对象的锁而已。
类锁只能在同一时刻被一个对象所拥有。查看全部 -
synchronized的地位:
1、是Java的关键字,被Java语言原生支持。
2、是最基本的互斥同步手段。
3、是并发编程中的元老级角色,并发编程的必学内容。查看全部 -
synchronized(同步)的作用:
能够保证在“同一时刻”最多只有一个线程执行该段代码,以达到保证并发安全的效果查看全部 -
锁的特性
1. 可重入 好处:避免死锁 提高封装特性
2. 不可中断
查看全部 -
可重原理,加锁计数查看全部
-
反编译看字节码
javac
javap -verbose查看全部 -
缺陷
效率低
锁的释放场景少:正常执行完毕、异常抛出。
试图获取锁时不能设定超时,只能一直等。
不能中断一个正在试图获得锁的线程。
不够灵活
加锁放锁的时机的单一,相比之下读写锁更灵活。
无法知道结果
获取锁成功没?
查看全部 -
对象锁
方法锁:this,即当前实例对象
同步代码块锁:自己制定锁
类锁
静态方法锁:类对象
查看全部 -
只有一个Class对象:Java类可能会有很多个对象,但是只有1个Class对象。
查看全部 -
Synchronized的作用:能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。
查看全部 -
JVM会自动通过使用monitor来加锁和解锁,保证了同时只有一个线程可以执行指定代码,从而保证了线程安全,同时具有可重入和不可中断的性质。
查看全部 -
1.使用读写锁 2.使用lock
查看全部
举报