synchronized
synchronized是关键字
有以下三种使用方法:
-
静态方法加上关键字 类
-
实例方法(也就是普通方法)加上关键字 方法
-
方法中使用同步代码块 代码块
有两种加锁方式:
-
锁住类
-
锁住对象实例
1 实现的是非公平锁,锁执行后会自动释放。
2 使用synchronized,其它线程会一直等待下去,直至执行完。
lock
lock是一个接口 他是一个包含公平锁和非公平锁,包含多个接口,使用Lock必须手动释放锁。
Lock可以让等待锁的线程响应中断,而synchronized不会,线程会一直等待下去。
通过Lock可以知道线程有没有拿到锁,而synchronized不能。
Lock能提高多个线程读操作的效率。
尝试获取锁 成功返回true 失败返回false 这样就可以检验是否已经锁被释放了

这个是trylock的重载方法,可以设置一个时间值 当到达这个时间 才会返回true和false
也就是在参数范围内,则不会立即返回值,会等待一段时间,这个时间就是传入的具体参数值,在这个时间内获取锁成功,则依旧返回true;
当过了参数范围后,还是获取锁失败,则立即返回false。

还有就是
void unlock(); 需要执行完手动来释放锁。
本文深入探讨了Java中synchronized关键字的用法及其与Lock接口的区别。synchronized可应用于静态方法、实例方法及代码块,实现自动释放锁的非公平锁机制。Lock则提供了更灵活的锁定策略,包括公平锁和非公平锁,需手动释放锁,且支持中断响应及锁状态检查,提高了多线程读操作的效率。
494

被折叠的 条评论
为什么被折叠?



