多线程的东西看了有两三遍了,但是直到数据库这门专业课都学完了,印象还是不很深刻,在备考的时候死记硬背了一些事务啦、死锁啦、隔离级别之类的概念,跟多线程有点共通之处.
最近在看马士兵的视频教程,加深理解.
貌似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");
}
}
}
}
}
分享到:
相关推荐
很棒的动画效果,怎么说呢...<br>修正列表为空时抛出的null异常<br>修正列表为空时动画线程的死锁<br><br>-- 2008-7-2<br>修正音量控制模块 (终于可以不用java自带混频器了)<br>必须在Line被open之后取得控制器!...
很棒的动画效果,怎么说呢...<br>修正列表为空时抛出的null异常<br>修正列表为空时动画线程的死锁<br><br>-- 2008-7-2<br>修正音量控制模块 (终于可以不用java自带混频器了)<br>必须在Line被open之后取得控制器!...
很棒的动画效果,怎么说呢...<br>修正列表为空时抛出的null异常<br>修正列表为空时动画线程的死锁<br><br>-- 2008-7-2<br>修正音量控制模块 (终于可以不用java自带混频器了)<br>必须在Line被open之后取得控制器!...
7 一个支持多线程的服务器框架 <br>13. 8 代理服务器 <br>13. 9 Telnet客户端 <br>13. 10 UDP编程 <br>13. 11 聊天室服务器端 <br>13. 12 聊天室客户端 <br>13. 13 FTP客户端 <br>第14章 数据库 <br>14. 1 连接各种...
基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip 基于java的开发源码-多线程程序死锁检查 JCarder.zip ...
3.1 Java线程<br>3.2 创建线程<br>3.3 使用线程的缺点<br>3.3.1 初始启动变慢<br>3.3.2 资源利用<br>3.3.2 资源利用<br>3.4 线程管理<br>3.5 共享资源的使用同步<br>3.5.1 同步方法和同步代码块的嵌套调用...
java多线程死锁预防机制研究,java多线程死锁预防机制研究
Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新...
详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...
sqlcore是一套方便的基于java应用系统数据的的检查工具,方便简单,是现代系统的自动化检测的有效工具 sqlcore可以用于如下的使用场景: 1.数据库的注入分析 2.数据库sql的执行效率分析 3.平台的监控和业务逻辑的...
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 ...Java线程:并发协作-死锁 55 Java线程:线程之间的数据传递 58
<br>实例39 单个线程同步运行 <br>实例40 多线程同步运行 <br>实例41 线程Thread Relative Static跟踪与实现 <br>实例42 线程池(ThreadPool)的应用 <br>实例43 多线程互斥运行 <br>实例44 多线程时钟应用程序 <br>...
<br>实例39 单个线程同步运行 <br>实例40 多线程同步运行 <br>实例41 线程Thread Relative Static跟踪与实现 <br>实例42 线程池(ThreadPool)的应用 <br>实例43 多线程互斥运行 <br>实例44 多线程时钟应用程序 <br>...
10<br><br>0023 如何添加引用第3方控件 11<br><br>0024 如何生成DLL文件 11<br><br>0025 如何使用不安全代码 11<br><br>第2章 语言基础 13<br><br>2.1 注释 14<br><br>0026 如何对代码进行注释 14<br>...
Java多线程之-死锁.doc
【IT十八掌徐培成】Java基础第09天-01.多线程-时间片-死锁演示.zip
java 一个死锁的例子 java 一个死锁的例子 java 一个死锁的例子
第14章 事务和锁 292<br>14.1 事务 292<br>14.1.1 事务的特点 292<br>14.1.2 启动事务 292<br>14.1.3 保存事务 294<br>14.1.4 提交事务 295<br>14.1.5 回滚事务 296<br>14.1.6 自动提交事务 298<br>14.1.7 显式事务 ...