Coin163

首页 > JAVA多线程死锁简单Demo

JAVA多线程死锁简单Demo

相关标签: java 多线程

2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:java多线程

一、多线程 1、操作系统有两个容易混淆的概念,进程和线程。 进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信

死锁 概念,AB线程,A持有a锁B持有b锁,A在等待b锁,而B在等待a锁 发生场景之一:同步嵌套 简单的嵌套造成死锁的Demo: class Lock implements Runnable{

private boolean flag;

public Lock(boolean flag){

this.flag = flag;

}

@Override

public void run() {

if(flag){

while(true){

synchronized (LockObj.obj1) {

System.out.println(Thread.currentThread().getName()+"

if...");

synchronized (LockObj.obj2) {

System.out.println(Thread.currentThread().getName()+"

if...");

}

}

}

}else{

while(true){

synchronized (LockObj.obj2) {

System.out.println(Thread.currentThread().getName()+"

else...");

synchronized (LockObj.obj1) {

System.out.println(Thread.currentThread().getName()+"

else...")

相关推荐:java多线程(一)线程状态与创建线程

一、几个基本概念的区分 1.进程与程序的区分 程序 进程 包含代码部分、数据部分 包含代码部分、数据部分、进程控制块 顺序执行 并发执行 独占资源 共享资源 同步的 异步的 静态的 动态的 (本质区别) 2.线程与进程的关系 相同:线程是轻量级的进程,一个进程

;

}

}

}

}

}

public synchronized void show(){

System.out.println(Thread.currentThread().getName()+"show...");

}

}class LockObj{

public static final Object obj1 = new Object();

public static final Object obj2 = new Object(); }class Test{

public static void main(String[] args) {

Lock l1 = new Lock(false);

Lock l2 = new Lock(true);

Thread t1 = new Thread(l1);

Thread t2 = new Thread(l2);

t1.start();

t2.start();

}} 这个demo我测试过了,没问题的,绝壁死锁。简单分析一下,线程t1因为flag为false所以永远走esle分支,相反的t2永远走if分支,当main线程运行到t2.start();之后,两个线程开启,假定t2先拿到cpu的执行权,走if分支拿到obj1锁,这时候有可能t1也拿到cpu的执行权拿到obj2的锁,再如果t2继续走想拿obj2锁,但此时obj2锁在t1手里,而t2也想拿obj1,这样都相互想拿对方的锁,就僵持不下造成死锁,加一个while(true)的原因是让他一定出现死锁,不然有时候试好多次,死锁的现象不明显就蛋碎了。

原文

死锁 概念,AB线程,A持有a锁B持有b锁,A在等待b锁,而B在等待a锁 发生场景之一:同步嵌套 简单的嵌套造成死锁的Demo: class Lock implements Runnable{ private boolean flag; public Lock(b

------分隔线----------------------------