看scjp考题的时候,关于一道多线程题目,总是不能把它推成死锁,郁闷之下,一看答案,原来真的不是死锁,可是为什么我老是想要把它推成死锁呢?很明显,是没有学到家。所以,翻箱倒柜查完资料之后,写出一个死锁Demo,来确定自己确实知道了什么是死锁。
public class DeadLockDemo {
public static void main(String[] args) {
final String lock1 = "LOCK1";
final String lock2 = "LOCK2";
Thread t1 = new Thread(){
public void run() {
synchronized (lock1) {
System.out.println("t1:Locking Source1");
try {
sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock2) {
System.out.println("t1:Locking Source2");
}
}
}
};
Thread t2 = new Thread(){
public void run(){
synchronized (lock2) {
System.out.println("t1:Locking Source1");
try {
sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock1) {
System.out.println("t2:Locking Source1");
}
}
}
};
t1.start();
t2.start();
}
}
/*Output:
t1:Locking Source1
t2:Locking Source2
*///:~
一个简单死锁的小小实例。
关于“锁”还有点懵懂,希望以后能慢慢领悟。
分享到:
相关推荐
DeadLock查找死锁的位置及解决 DeadLock查找死锁的位置及解决
明白死锁产生的原因,在程序中演示死锁产生并从而实现多线程陈旭解决死锁(deadlock)这一类问题。
死锁2deadlock---马克-to-win java视频的详细的描述与介绍
僵局由Jay&Beauty创建
死锁1deadlock---马克-to-win java视频的详细描述与介绍
我的项目是关于使用动态分析避免多线程程序中的死锁。使用一个名为JADE的工具来实现此项目,并查看其效率如何。该项目中总共有六个模块,这些模块如下所示。程序的某些执行,ta提取的线程是否可以到达la1,并在la1处...
java死锁解决方法 要运行模拟: javac DeadlockedApp.java AppWrapper.java Java -cp 。 应用包装器 关于作者 Uri Shamay 是 Akamai 的首席首席系统软件工程师,您可以阅读有关他的更多信息,并在和关注他。
这是和死锁有关的问题,和简单的一个例子!
死锁,Deadlock(重点关注) 2.执行中,Runnable(重点关注) 3.等待资源,Waiting on condition(重点关注) 4.等待监控器检查资源,Waiting on monitor 5.暂停,Suspended 6.对象等待中,Object.wait() ...
sqlserver 解除死锁,网络上看到的很实用分享给大一起用
介绍之前看到的别人用GO语言写了一个死锁检测工具,大概看了一下的实现原理,然后自己就用JAVA写了一次。原项目链接作用在开发调试期,帮助排查程序中的死锁情况。原理LockHolder保存了整个进程所有线程与锁之间的...
这个 git 存储库包含一个测试来重现与 ACT_RU_AUTHORIZATION 相关的死锁。 该项目包含以下文件: src/ ├── main │ ├── java │ └── resources └── test ├── java │ └── org │ └──...
主要给大家介绍了关于mysql出现报错:Deadlock found when trying to get lock; try restarting transaction的解决方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看...
该工具是使用JAVA编程语言和Swing和Windows API构建器构建的。 可以通过下载存储库中提供的'Deadlock.jar'文件来运行。 还要确保在运行它的系统中安装了最新的JDK。 该工具的功能: 它提供了有关死锁的基本信息。...
该代码是用JAVA编写的著名的线程死锁问题
当一组进程请求当前正被保留/分配给某些其他进程的相同资源时,就会发生死锁情况。 处于死锁状态的进程将等待大量时间,并且它们将永远不会终止其执行,并且该组... Java编程语言用于开发我们在本文中介绍的所有算法。
不断地前进1.1.4光明或是黑暗1.2你必须知道的几个概念1.2.1同步(Synchronous)和异步(Asynchronous) 1.2.2并发(并发)和并行(并行) 1.2.3临界区1.2.4双重(阻止)和非双重(非阻止) 1.2.5死锁(Deadlock),...
要求程序无死锁(Deadlock Free),无竞争条件(No Race Condition),无久等(No Long Waiting)等状态发生,可以采用任何一种线程同步机制实现,建议首选BlockingQueue。 (1)增加一项ticker功能,报告每隔两秒钟...
用于死锁检测和避免的模拟器。 它由处理所有进程和资源的进程、资源和内核组成。 死锁是主类。 输入取自具有特定格式的文本文件。 例子: 死锁.txt 2 //进程数 2 //资源数量 1 1 // 每个资源的实例数 1C2 //表示...
死锁(Deadlock):线程彼此占用着对方想要获得的资源不释放 饥饿(Starvation):一个或多个线程无法获得资源,导致一直无法执行 活锁(Livelock):进程间互相谦让,导致资源不断地在两个线程间跳动,而没有一个...