`
lemo
  • 浏览: 90868 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程死锁例子

阅读更多
public class TestDeadLock implements Runnable{
	public int flag = 1;
	static Object obj1 = new Object(),obj2 = new Object();
	
	public void run() {
		System.out.println("flag= "+flag);
		
		if(flag==1) {
			synchronized (obj1) {
				try {
					Thread.sleep(500);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				synchronized (obj2) {
					System.out.println("1");
				}
			}
		}
		
		if(flag==0) {
			synchronized (obj2) {
				try {
					Thread.sleep(500);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				synchronized (obj1) {
					System.out.println("0");
				}
			}
		}
	}
	public static void main(String[] args) {
		TestDeadLock td1 = new TestDeadLock();
		TestDeadLock td2 = new TestDeadLock();
		td1.flag = 1;
		td2.flag = 0;
		Thread t1 = new Thread(td1);
		Thread t2 = new Thread(td2);
		
		t1.start();
		t2.start();
	}
}

分享到:
评论

相关推荐

    线程死锁的例子

    在我们的例子“ConsoleApplication1”中,很可能包含了一个模拟线程死锁的简单控制台应用程序。通过这样的实例,我们可以深入理解线程是如何在操作系统中分配CPU时间片进行工作的。在单处理器系统中,线程不是同时...

    三个C#线程的例子三个C#线程的例子三个C#线程的例子

    线程同步用于控制不同线程对共享资源的访问,以避免数据竞争和死锁。`Mutex`、`Semaphore`、`Monitor`和`lock`关键字是常用的同步机制。这里以`lock`关键字为例: ```csharp using System; using System.Threading;...

    Java 线程死锁的问题解决办法

    在这个例子中,我们可以看到线程死锁的问题是如何发生的,以及我们如何解决这个问题。 五、总结: Java 线程死锁的问题解决办法是非常重要的。在编写代码时,我们应该避免嵌套锁定,使用锁定的顺序,使用并发容器...

    java线程死锁代码示例

    本文主要介绍了java线程死锁代码示例,分享了一个简单线程死锁的例子,需要的朋友可以参考下。以下是对该示例的详细解释和知识点总结: 1. 死锁的概念:死锁是操作系统层面的一个错误,是进程死锁的简称,最早在 ...

    Java中死锁的例子

    给定的例子展示了两个线程(t1 和 t2)和两个对象(resource1 和 resource2)之间的死锁情况: ```java public class Deadlock { public static void main(String[] args) { final Object resource1 = "resource1...

    C例子:死锁

    该程序是我写的博客“一起talk C栗子吧(第一百一十八回:C语言实例--线程死锁二)”的配套程序,共享给大家使用

    java 一个死锁的例子

    在Java编程中,死锁是并发编程中一个重要的概念,它发生在两个或多个线程相互等待对方释放资源,导致它们都无法继续执行的情况。这个例子中,我们将会深入探讨死锁的产生、识别以及如何避免它。 首先,让我们理解...

    QT多线程小例子.zip

    此外,线程间的通信需要谨慎处理,避免阻塞和死锁的发生。 QT5还引入了QtConcurrent库,提供了一组方便的函数,如run()、mapped()等,可以简化并行计算的任务,无需直接处理线程细节。这些函数会自动在合适的线程池...

    java多线程例子

    Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。...但是,使用多线程也需要注意一些问题,例如线程安全、死锁、资源竞争等。

    易语言完美多线程控制例子

    在“家范”的这个例子中,我们可能看到如何创建和管理这些线程,以及如何避免常见的线程问题,如竞态条件和死锁。竞态条件是指多个线程同时访问并修改同一块数据,导致结果不确定。死锁则是指两个或更多线程相互等待...

    基于win32的多线程实现例子

    在多线程编程中,线程间的同步至关重要,以避免数据竞争和死锁等问题。Win32 API 提供了多种同步机制: 1. 互斥量(Mutex):保证同一时间只有一个线程能访问特定资源。 2. 信号量(Semaphore):控制对有限资源的...

    线程同步小例子

    在编程领域,线程同步是多线程编程中的一个核心概念,它涉及到如何有效地管理和协调多个并发执行的线程,确保它们能正确地共享资源,避免数据竞争和死锁等问题。这个“线程同步小例子”是基于孙鑫先生著作中的示例...

    iOS中的线程死锁实例详解

    在iOS开发中,多线程技术常常用于提升应用程序的性能和用户体验,但如果不正确地管理线程,就可能导致线程死锁的问题。线程死锁是多线程编程中的一个严重问题,它指的是两个或多个线程在执行过程中因为互相等待对方...

    mfc 线程简单例子

    4. 线程同步:如果线程需要与主线程通信或修改共享资源,需要使用MFC的同步对象,如CSemaphore、CCriticalSection等,以防止数据竞争和死锁。 5. 线程结束:线程函数执行完毕后,线程自动退出。 在"Progress ...

    多线程例子 演示多线程使用

    4. **线程同步**:多线程编程中一个重要的问题就是同步,以防止数据竞争和死锁。`std::mutex`可以用来保护共享资源,确保同一时间只有一个线程能访问。例如: ```cpp #include #include std::mutex mtx; int ...

    tc调用lw 及多线程简单例子.rar

    7. **注意事项**:在多线程编程中,要特别注意线程安全问题,如数据竞争和死锁。确保对共享资源的访问是同步的,并且避免创建不必要的线程,因为线程创建和销毁也有一定的开销。 总结起来,这个压缩包可能包含了一...

    分布式死锁的一个例子

    具体来说,当一个SQL Server的线程(例如SPID 55)执行查询并等待客户端(如.NET应用程序)接收结果时,如果此时有另一个线程(如SPID 57)试图访问已被SPID 55占用的资源,就可能发生分布式死锁。在这种情况下,...

    Java多线程死锁示例

    在本示例中,我们将深入探讨Java多线程死锁的概念,并通过一个具体的代码示例来理解其工作原理和避免策略。 首先,我们来看标题中的关键点——“Java多线程死锁示例”。死锁是多线程编程中的一种异常状态,通常发生...

    5个qt多线程例子

    总的来说,这些QT多线程的例子涵盖了从基础的线程创建到复杂的网络通信,是学习和实践QT多线程编程的理想资源。通过研究这些示例,开发者不仅可以提升QT编程技能,还能掌握多线程和网络编程的关键概念,为开发高效、...

Global site tag (gtag.js) - Google Analytics