`
ninghq
  • 浏览: 12389 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java死锁示例代码

    博客分类:
  • java
阅读更多
public class DeadLock {

    public static String obj1 = "obj1";
    public static String obj2 = "obj2";

    public static void main(String[] args) {

        Thread thread1 = new Thread(new Lock1());
        Thread thread2 = new Thread(new Lock2());
        thread1.start();
        thread2.start();

    }
}

    class Lock1 implements Runnable{

        @Override
        public void run() {
            try {
                System.out.println("Lock1 runing!");
                while (true){
                    synchronized(DeadLock.obj1){
                        System.out.println("Lock1 lock obj1");
                        Thread.sleep(3000);
                        synchronized (DeadLock.obj2){
                            System.out.println("Lock1 lock obj2");
                        }
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    class Lock2 implements Runnable{

        @Override
        public void run() {
            try {
                System.out.println("Lock2 runing!");
                while (true){
                    synchronized(DeadLock.obj2){
                        System.out.println("Lock2 lock obj2");
                        Thread.sleep(3000);
                        synchronized (DeadLock.obj1){
                            System.out.println("Lock2 lock obj1");
                        }
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

 

分享到:
评论

相关推荐

    Java 死锁示例性源代码

    本源代码是博客《Java 多线程编程之七:死锁(附源代码)》附带的实例性源代码。原博客链接地址:http://blog.csdn.net/defonds/archive/2010/01/26/5258120.aspx。

    java实现死锁的示例代码

    下面是一个简单的死锁示例代码: ```java package javasimple; public class DieSynchronized { public static void main(String[] args) { Object o1 = new Object(); Object o2 = new Object(); Thread t1 =...

    java线程死锁代码示例

    4. Java 中的死锁示例:在给定的示例代码中,我们可以看到两个线程,MyThread1 和 MyThread2,它们都需要访问两个共享资源 s1 和 s2。为了模拟死锁,我们使用 synchronized 块来锁住这两个资源,并在锁住的过程中...

    java 一个死锁的例子

    在"DeadLock.java"文件中,很可能会包含一个模拟死锁的示例代码。通常,这样的代码会创建两个或更多线程,每个线程会尝试获取一组锁,但顺序不同,从而导致死锁。例如: ```java class Resource { private int id;...

    java死锁问题

    Java死锁问题是一个在多线程编程中常见的复杂情况,它发生在两个或多个线程相互等待对方释放资源,导致它们都无法继续执行的情况。理解并解决死锁是Java开发者必须掌握的关键技能之一,尤其是在构建高并发、多线程...

    JAVA死锁and生产者消费者问题

    在`ThreadDeadLock.java`文件中,可能包含了演示死锁的代码示例,例如两个线程各自持有对方需要的资源,导致双方都无法继续执行。解决死锁的方法包括避免循环等待、设置优先级、超时重试或者使用死锁检测算法,如...

    非常经典的死锁演示代码

    在本篇文章中,我们将通过一个具体的Java代码示例来深入理解死锁发生的原理及其解决方法。 #### 二、代码分析 下面是对给定代码的具体分析: ```java package com.wmmad.test; public class DeadLockMarker { ...

    Java多线程死锁示例

    首先,我们来看标题中的关键点——“Java多线程死锁示例”。死锁是多线程编程中的一种异常状态,通常发生在两个或多个线程之间,每个线程都在等待另一个线程释放它需要的资源,从而形成一个无解的循环等待。在这种...

    死锁算法 Java实现 操作系统

    以下是一个简单的死锁示例: ```java public class DeadLockExample { public static void main(String[] args) { Resource resource1 = new Resource("Resource1"); Resource resource2 = new Resource(...

    Java程序性能优化 让你的Java程序更快、更稳定附本书示例代码(清晰版)

    总的来说,“Java程序性能优化 让你的Java程序更快、更稳定”这本书将涵盖以上诸多方面,通过理论结合实际的示例代码,帮助读者深入理解Java性能优化的各个方面,从而写出更快、更稳定的Java程序。书中附带的源文件...

    银行家避免死锁算法模拟实现Java版

    以下是一个简单的Java代码框架示例: ```java class Process { int maxNeed; int currentNeed; int allocatedResources; } class Resource { int total; int available; } // 初始化系统资源和进程信息 List...

    Java 线程通信示例 源代码

    这个"Java线程通信示例源代码"很可能包含了演示如何在不同线程之间共享数据和协调执行顺序的实例。线程通信主要涉及两个核心概念:同步和互斥。 1. **线程同步**:线程同步是为了防止多个线程同时访问共享资源,...

    并发编程Java代码示例.zip

    "并发编程Java代码示例.zip"这个压缩包很可能是包含了一系列有关Java并发编程的实例代码,帮助开发者理解和掌握如何在Java中有效地管理多线程。 Java并发编程涉及到的关键概念和知识点包括: 1. **线程**:线程是...

    java经典案例源代码下载

    本资源“java经典案例源代码下载”是专为初中级Java学习者设计的,旨在通过实际的代码示例帮助他们加深对Java的理解,提高编程技能。 在学习Java时,理论知识与实践相结合至关重要。这个资源包含了一系列经典Java...

    javaSE相关示例代码, 如JDK新特性,集合分析,NIO,concurrent等 Java学习资料

    通过并发示例代码,我们可以学习如何避免死锁、如何使用线程池优化并发性能,以及如何使用并发工具类提高代码的可读性和可维护性。 这个“java-se-master”压缩包提供的示例代码无疑是一个宝贵的Java学习资源,它...

    java 多线程示例

    Java提供了synchronized关键字来实现线程同步,确保同一时刻只有一个线程能执行特定代码块。 5. **死锁** 死锁是两个或多个线程相互等待对方释放资源而造成的僵局。避免死锁的关键在于遵循资源请求的顺序化和避免...

    Java 并发编程实战 中英文+代码示例

    书中结合了理论与实际示例,提供了丰富的代码示例,使得读者能够通过实际操作来加深对并发编程的理解。 在Java并发编程领域,以下几个核心知识点是本书的重点: 1. **线程基础**:介绍Java中的Thread类,如何创建...

    Java 实例 - 死锁及解决方法源代码+详细指导教程.zip

    3. **死锁示例**: 通过创建两个线程,每个线程分别尝试获取两个锁(以不同顺序)来模拟死锁。例如,线程1先获取锁1再尝试获取锁2,而线程2则先获取锁2再尝试获取锁1。 4. **死锁预防**: - 避免循环等待:为所有...

Global site tag (gtag.js) - Google Analytics