`
sulifeng
  • 浏览: 39941 次
  • 性别: 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 连接各种...

    基于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多线程死锁预防机制研究

    java多线程死锁预防机制研究,java多线程死锁预防机制研究

    Java多线程编程总结

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

    java多线程编程总结

    详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...

    sqlcore数据库防注入分析系统

    sqlcore是一套方便的基于java应用系统数据的的检查工具,方便简单,是现代系统的自动化检测的有效工具 sqlcore可以用于如下的使用场景: 1.数据库的注入分析 2.数据库sql的执行效率分析 3.平台的监控和业务逻辑的...

    java多线程笔记

    Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 ...Java线程:并发协作-死锁 55 Java线程:线程之间的数据传递 58

    《Visual.C#.编程精彩百例》配套光盘.part2

    &lt;br&gt;实例39 单个线程同步运行 &lt;br&gt;实例40 多线程同步运行 &lt;br&gt;实例41 线程Thread Relative Static跟踪与实现 &lt;br&gt;实例42 线程池(ThreadPool)的应用 &lt;br&gt;实例43 多线程互斥运行 &lt;br&gt;实例44 多线程时钟应用程序 &lt;br&gt;...

    《Visual.C#.编程精彩百例》配套光盘part1

    &lt;br&gt;实例39 单个线程同步运行 &lt;br&gt;实例40 多线程同步运行 &lt;br&gt;实例41 线程Thread Relative Static跟踪与实现 &lt;br&gt;实例42 线程池(ThreadPool)的应用 &lt;br&gt;实例43 多线程互斥运行 &lt;br&gt;实例44 多线程时钟应用程序 &lt;br&gt;...

    C#编程经验技巧宝典

    10&lt;br&gt;&lt;br&gt;0023 如何添加引用第3方控件 11&lt;br&gt;&lt;br&gt;0024 如何生成DLL文件 11&lt;br&gt;&lt;br&gt;0025 如何使用不安全代码 11&lt;br&gt;&lt;br&gt;第2章 语言基础 13&lt;br&gt;&lt;br&gt;2.1 注释 14&lt;br&gt;&lt;br&gt;0026 如何对代码进行注释 14&lt;br&gt;...

    Java多线程之-死锁.doc

    Java多线程之-死锁.doc

    【IT十八掌徐培成】Java基础第09天-01.多线程-时间片-死锁演示.zip

    【IT十八掌徐培成】Java基础第09天-01.多线程-时间片-死锁演示.zip

    java 一个死锁的例子

    java 一个死锁的例子 java 一个死锁的例子 java 一个死锁的例子

    SQL2005入门到精通(14)

    第14章 事务和锁 292&lt;br&gt;14.1 事务 292&lt;br&gt;14.1.1 事务的特点 292&lt;br&gt;14.1.2 启动事务 292&lt;br&gt;14.1.3 保存事务 294&lt;br&gt;14.1.4 提交事务 295&lt;br&gt;14.1.5 回滚事务 296&lt;br&gt;14.1.6 自动提交事务 298&lt;br&gt;14.1.7 显式事务 ...

Global site tag (gtag.js) - Google Analytics