前言
本文主要是对Java多线程死锁代码demo的分析,对其过程以及死锁进行了大致的概括,希望对大家有帮助。
死锁代码demo
如下的代码为死锁的demo.
创建了两个线程, 分别拥有锁o1和o2 ,并且尝试去获取锁o2和o1 ,造成相互等待的阻塞状态.
package com.thread.deadlock;
/**
* 类名称:MustDeadLock
* 类描述: 必定发生死锁的情况
*
* @author: https://javaweixin6.blog.csdn.net/
* 创建时间:2020/9/8 7:55
* Version 1.0
*/
public class MustDeadLock implements Runnable {
//标记位, 不同的线程根据标记位执行不同的代码
int flag = 1 ;
//两把锁
static Object o1 = new Object();
static Object o2 = new Object();
public static void main(String[] args) {
MustDeadLock r1 = new MustDeadLock();
MustDeadLock r2 = new MustDeadLock();
//给不同的线程, 设置不同的标记位
r1.flag=1;
r2.flag=2;
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
@Override
public void run() {
//打印出标记位