多线程 死锁

编程入门 行业动态 更新时间:2024-10-26 22:21:28

多线程 <a href=https://www.elefans.com/category/jswz/34/1769948.html style=死锁"/>

多线程 死锁

嵌套锁。

两个线程调用的同步代码中有嵌套锁。

一个线程的内层锁在另外一个线程的外部锁,一个线程的外部锁在另外一个线程的内部锁,

A已经获得读锁,B已经获得写锁 A再去获取写锁,B再去获取读锁,读写锁都被另一个线程持有,方法不能继续向下执行,一直处于阻塞状态;

public class DeadLock {private final Object MUTEX_READ = new Object();private final Object MUTEX_WRITE = new Object();public void read() {synchronized (MUTEX_READ) {System.out.println(Thread.currentThread() + " GET WRITE LOCK");synchronized (MUTEX_WRITE) {System.out.println(Thread.currentThread() + " GET READ LOCK");System.out.println("I am reading a bull shit, you mother fucker!");}System.out.println(Thread.currentThread() + " RELEASE READ LOCK");}System.out.println(Thread.currentThread() + " RELEASE WRITE LOCK");}public void write() {synchronized (MUTEX_WRITE) {System.out.println(Thread.currentThread() + " GET READ LOCK");synchronized (MUTEX_READ) {System.out.println(Thread.currentThread() + " GET WRITE LOCK");}System.out.println(Thread.currentThread() + " RELEASE WRITE LOCK");}System.out.println(Thread.currentThread() + " RELEASE READ LOCK");}public static void main(String[] args) {final DeadLock deadLock = new DeadLock();for (int i = 0; i < 20; i++) {new Thread(deadLock::read).start();new Thread(deadLock::write).start();}}
}
package phase1.chapter4;import java.util.HashMap;
import java.util.Map;/*** @classname: HashMapDeadLock* @description:另外一个死锁现象,会搞死机!!!!!! 慎重运行!!!!!!!*/
public class HashMapDeadLock {private final Map<String, String> map = new HashMap<>();//写方法public void put(String key, String value) {this.map.put(key, value);}public static void main(String[] args) {final HashMapDeadLock lock = new HashMapDeadLock();//10个线程运行写方法,会造成死锁for (int x = 0; x < 10; x++) {new Thread(() -> {for (int i = 0; i < Integer.MAX_VALUE; i++) {lock.put(String.valueOf(i), String.valueOf(i));}}).start();}}
}

更多推荐

多线程 死锁

本文发布于:2023-07-28 18:02:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1269901.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:死锁   多线程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!