死锁

简介:

什么是死锁:
是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁

死锁产生的四个条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

案例:

import sun.security.krb5.internal.TGSRep;


public class Test14 implements Runnable {
    public int flag=1;
    static Object o1=new Object(), o2=new Object();

    public static void main(String[] args) {
        Test14 td1=new Test14();
        Test14 td2=new Test14();
        td1.flag=1;
        td2.flag=0;
        Thread t1=new Thread(td1);
        t1.setName("线程一");
        Thread t2=new Thread(td2);
        t2.setName("线程二");
        t1.start();
        t2.start();

    }

    @Override
    public void run() {
        System.out.println("falg"+flag);
        if(flag==1){
            synchronized (o1) {

                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"在执行操作");
                synchronized (o2) {
                    System.out.println("1");
                }

            }

        }

        if(flag==0){
            synchronized (o2) {

                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"在执行操作");
                synchronized (o1) {
                    System.out.println("0");
                }

            }

        }

    }




}
目录
相关文章
|
1月前
|
监控 算法 安全
|
3月前
|
安全 Java 测试技术
发生死锁怎么办
发生死锁怎么办
30 0
|
4月前
|
SQL 存储 设计模式
如何与死锁斗争!!!
尽量不要改动线上数据库的字段,因为会触发锁表影响业务,严重时还可能出现死锁!数据库真的出现了死锁,业务全挂了,这种时候应该怎么办呢?本文就给大家分享一下数据库死锁的排查思路,万一出了问题,也有底气去解决。
34 1
|
4月前
死锁的发生与避免
死锁的发生与避免 死锁是指两个或者多个进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,它们都将无法推进下去。在计算机系统中,死锁是一种常见的问题,因此需要采取一些措施来避免死锁的发生。
|
5月前
|
安全 算法
死锁的总结(1)
死锁的总结
14 0
|
5月前
|
算法 安全
死锁的总结(2)
死锁的总结
21 0
|
9月前
|
算法 调度
死锁的理解
死锁的理解
61 0
|
11月前
|
安全 算法
初识死锁问题
关于对死锁的详解
|
程序员 Linux 芯片