`
sulifeng
  • 浏览: 40897 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

<转载>--java多线程死锁例子 TestDeadLock.java

    博客分类:
  • Java
阅读更多
  多线程的东西看了有两三遍了,但是直到数据库这门专业课都学完了,印象还是不很深刻,在备考的时候死记硬背了一些事务啦、死锁啦、隔离级别之类的概念,跟多线程有点共通之处.
 
  最近在看马士兵的视频教程,加深理解.

  貌似java的多线程没有判断死锁的机制,数据库里面是会判断是否发生死锁的.下面这个例子里却是无止境地等待对方释放资源.

public class TestDeadLock implements Runnable {
	public int flag = 1;

	static Object o1 = new Object();

	static Object o2 = new Object();

	public static void main(String[] args) {
		TestDeadLock t1 = new TestDeadLock();
		TestDeadLock t2 = new TestDeadLock();
		t1.flag = 0;
		t2.flag = 1;
		Thread th1 = new Thread(t1);
		Thread th2 = new Thread(t2);
		th1.start();
		th2.start();
	}

	public void run() {
		System.out.println("flag:"+flag);
		if (flag == 1) {
			synchronized (o1) {
				try {
					Thread.sleep(500);
				} catch (Exception e) {

				}
				synchronized (o2) {
					System.out.println("th1");
				}
			}
		}

		if (flag == 0) {
			synchronized (o2) {
				try {
					Thread.sleep(500);
				} catch (Exception e) {

				}
				synchronized (o1) {
					System.out.println("th2");
				}

			}
		}
	}

} 
分享到:
评论

相关推荐

    BeoPlayer Java v0.62

    很棒的动画效果,怎么说呢...&lt;br&gt;修正列表为空时抛出的null异常&lt;br&gt;修正列表为空时动画线程的死锁&lt;br&gt;&lt;br&gt;-- 2008-7-2&lt;br&gt;修正音量控制模块 (终于可以不用java自带混频器了)&lt;br&gt;必须在Line被open之后取得控制器!...

    java写的音乐播放器 v0.63 纯白特别版

    很棒的动画效果,怎么说呢...&lt;br&gt;修正列表为空时抛出的null异常&lt;br&gt;修正列表为空时动画线程的死锁&lt;br&gt;&lt;br&gt;-- 2008-7-2&lt;br&gt;修正音量控制模块 (终于可以不用java自带混频器了)&lt;br&gt;必须在Line被open之后取得控制器!...

    java写的音乐播放器 v0.53 纯白特别版

    很棒的动画效果,怎么说呢...&lt;br&gt;修正列表为空时抛出的null异常&lt;br&gt;修正列表为空时动画线程的死锁&lt;br&gt;&lt;br&gt;-- 2008-7-2&lt;br&gt;修正音量控制模块 (终于可以不用java自带混频器了)&lt;br&gt;必须在Line被open之后取得控制器!...

    Java JDK实例宝典

    7 一个支持多线程的服务器框架 &lt;br&gt;13. 8 代理服务器 &lt;br&gt;13. 9 Telnet客户端 &lt;br&gt;13. 10 UDP编程 &lt;br&gt;13. 11 聊天室服务器端 &lt;br&gt;13. 12 聊天室客户端 &lt;br&gt;13. 13 FTP客户端 &lt;br&gt;第14章 数据库 &lt;br&gt;14. 1 连接各种...

    show-busy-java-threads.sh文件

    在Java应用程序的运行过程中,有时候会遇到CPU使用率异常升高的情况,这可能是由于线程的不恰当使用或者死锁等问题导致的。`show-busy-java-threads.sh`脚本就是为了帮助开发者快速定位和排查这类性能问题而设计的。...

    基于java的开发源码-多线程程序死锁检查 JCarder.zip

    基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip ...

    java应用程序中使用线程

    3.1 Java线程&lt;br&gt;3.2 创建线程&lt;br&gt;3.3 使用线程的缺点&lt;br&gt;3.3.1 初始启动变慢&lt;br&gt;3.3.2 资源利用&lt;br&gt;3.3.2 资源利用&lt;br&gt;3.4 线程管理&lt;br&gt;3.5 共享资源的使用同步&lt;br&gt;3.5.1 同步方法和同步代码块的嵌套调用...

    Java 多线程课程的代码及少量注释.zip

    Java 多线程该存储库包含 ...Java 多线程低级生产者-消费者10- Java 多线程可重入锁11- Java 多线程死锁12- Java 多线程信号量13- Java 多线程Callable 和 Future14- Java 多线程中断线程贡献者Z. Berkay Celik@IOAyman

    linux实用脚本show-busy-java-threads

    在多线程环境中,如果某个线程长时间处于忙碌状态,可能会导致性能问题或者阻塞其他线程。通过运行这个脚本,我们可以获取到线程堆栈信息,分析哪些线程正在执行关键操作,或者是否存在死锁现象。这对于优化Java应用...

    <好书>java解惑(java puzzlers),过来挑战吧

    4. 多线程:并发编程是Java中的一个重要领域,书中可能会介绍线程安全问题,如synchronized关键字的使用,volatile变量的作用,以及死锁、活锁和饥饿现象的预防。 5. 异常处理:Java的异常处理机制是一个重要的知识...

    基于Java的源码-超简单Java多线程填表源码.zip

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应速度。这个"基于Java的源码-超简单Java多线程填表源码.zip"文件很可能包含一个简单的示例,演示如何在Java中...

    Java多线程编程总结

    Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-...

    java模拟线程死锁

    在 Java 中,线程死锁(Deadlock)是一种特殊的情况,发生在两个或多个线程之间的互相等待对方释放资源的状态。这种情况下,各个线程都在等待其他线程释放资源,而自己也占用着其他线程需要的资源,从而导致所有线程...

    线程死锁的例子

    线程死锁是多线程编程中一个严重的问题,它发生在两个或多个线程相互等待对方释放资源,导致它们都无法继续执行。这个概念在计算机科学中尤为重要,因为并发执行是提高系统性能的关键手段,但如果不妥善处理,死锁...

    java 一个死锁的例子

    在Java编程中,死锁是并发编程中一个重要的概念,它发生在两...总之,理解并避免Java中的死锁对于编写高效、可靠的多线程应用程序至关重要。开发者应具备良好的并发编程知识,以便在设计和实现并发程序时避免这种陷阱。

    java基础--11.多线程

    Java多线程是Java编程中的核心概念,尤其在开发高并发、高性能的应用程序时不可或缺。在Java中,多线程允许程序同时执行多个任务,从而提高系统资源的利用率和响应速度。下面我们将深入探讨Java多线程的相关知识点。...

    java基础--11.多线程-1

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。本节我们将深入探讨Java中的多线程概念,包括其重要性、创建方法以及相关机制。 一、多线程的重要性 1....

    Java多线程之-死锁.doc

    Java 多线程之死锁 Java 多线程中的死锁是指两个或两个以上的线程互相持有对方所需要的资源,由于 synchronized 的特性,一个线程持有一个资源,或者说获得一个锁,在该线程释放这个锁之前,其它线程是获取不到这个...

    多线程死锁

    明白死锁产生的原因,在程序中演示死锁产生并从而实现多线程陈旭解决死锁(deadlock)这一类问题。

Global site tag (gtag.js) - Google Analytics