黑马程序员技术交流社区
标题:
求一个简单的死锁程序
[打印本页]
作者:
小陈期待逆袭
时间:
2013-5-29 20:50
标题:
求一个简单的死锁程序
本帖最后由 小陈期待逆袭 于 2013-5-29 22:04 编辑
如题:得到一个一个简单的死锁程序,最主要的是可以透过程序的死锁原因。
作者:
msileandroid
时间:
2013-5-29 21:18
class Dead implements Runnable
{
public boolean flag;
public Object locka=new Object();
public Object lockb=new Object();
public Dead(boolean f) {this.flag=f;}
public void run()
{
while(true) {
if(flag)
{
synchronized(Lock.locka)
{
System.out.println("if loca");
synchronized(Lock.lockb)
{
System.out.println("if lockb");
}
}
}
else {
synchronized(Lock.lockb)
{
System.out.println("else lockb");
synchronized (Lock.locka) {
System.out.println("else locka");
}
}
}
}
}
}
class Lock
{
static Object locka=new Object();
static Object lockb=new Object();
}
public class DeadLock {
public static void main(String args[])
{
Thread t1=new Thread(new Dead(true));
Thread t2=new Thread(new Dead(false));
t1.start();
t2.start();
}
}
复制代码
无标题.png
(33.86 KB, 下载次数: 0)
下载附件
2013-5-29 21:17 上传
结果:
/*
* 写一个死锁程序
* 容易引起 是因为两个锁引用的不是同一个锁,这样就会引起死锁现在
*
* 还有在多现在中出现安全性问题的时候,一般要考虑的问题:
* 1. 是不是两个线程,并且两个线程有没有同步,也就是有没有 synchronized 块或函数
* 2. 如果有多个同步代码块或同步函数的话,那看看所有 的同步它们用的是不是同一个锁,如果不是,会引起死锁和安全性问题
*
* */
作者:
陈潜
时间:
2013-5-29 21:24
class DeadLock implements Runnable {
boolean flag;
DeadLock(boolean flag) {
this.flag = flag;
}
public void run() {
if (flag) {
while (true) {
synchronized (TwoLocks.lock1) {
System.out.println("if get lock1");
synchronized (TwoLocks.lock2) {
System.out.println("if get lock2");
}
}
}
} else {
while (true) {
synchronized (TwoLocks.lock2) {
System.out.println("else get lock2");
synchronized (TwoLocks.lock1) {
System.out.println("else get lock1");
}
}
}
}
}
}
class TwoLocks {
public static Object lock1 = new Object();
public static Object lock2 = new Object();
}
public class Test {
public static void main(String[] args) throws InterruptedException {
new Thread(new DeadLock(true)).start();
new Thread(new DeadLock(false)).start();
}
}
复制代码
作者:
小陈期待逆袭
时间:
2013-5-29 22:06
msileandroid 发表于 2013-5-29 21:18
结果:
/*
谢谢我懂了,很好很强大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2