黑马程序员技术交流社区
标题:
死锁是什么现象
[打印本页]
作者:
ぃ_牵挂那无止尽
时间:
2014-5-21 17:58
标题:
死锁是什么现象
死锁是什么现象
作者:
蒙奇.D.路飞
时间:
2014-5-21 18:37
class Deadlocked implements Runnable{
boolean flag;
Deadlocked(boolean flag)
{
this.flag=flag;
}
@Override
public void run() {
// TODO Auto-generated method stub
if(flag)
{
synchronized(Lock.DEADLOCKA)
{
try{Thread.sleep(10);}catch(InterruptedException e){}
System.out.println("if locka");
synchronized(Lock.DEADLOCKB)
{
System.out.println("else lockb");
}
}
}
else
{
synchronized(Lock.DEADLOCKB)
{
try{Thread.sleep(10);}catch(InterruptedException e){}
System.out.println("if lockb");
synchronized(Lock.DEADLOCKA)
{
System.out.println("else locka");
}
}
}
}
}
class Lock{
public static final Lock DEADLOCKA=new Lock();
public static final Lock DEADLOCKB=new Lock();
}
public class ThreadTest5_Deadlocked {
public static void main(String [] args)
{
Deadlocked d1=new Deadlocked(true);
Deadlocked d2=new Deadlocked(false);
Thread t1=new Thread(d1);
Thread t2=new Thread(d2);
t1.start();
t2.start();
}
}
复制代码
一个死锁的小程序,比如两人一人只有一只筷子,有饭,都想吃饭 但是必须得要一双筷子,然后两个人谁也不给谁自己手里的那只 所以都吃不上。这个过程比作是死锁吧 。也有和谐的时候就是一方妥协的
作者:
alax
时间:
2014-5-22 03:17
多线程并发执行时,相互调用资源导致程序无法执行相互等待
作者:
流沙
时间:
2014-5-22 09:20
两个人每个人手里有一根筷子,都不给对方,所以谁都吃不了饭!所以这俩人都饿死了!筷子就是锁!人就是线程!明白不?
作者:
chenzhiyuan
时间:
2014-5-23 09:49
2个对象同时访问,操作一个方法,或数据,会影响数据的正确性,需要用到锁,如果不用锁,就会出现死锁,所谓死锁比如:你在系统上用一个软件打开一个文件,但是另一边一操作把他删掉,这时就出现了死锁,要等那个软件用完了那个文件,你才能操作它,在实际函数中,就是2个对象操作同一份数据,存在数据的不安全,与正确性,希望对你有所帮助,
作者:
飘渺≮★耘
时间:
2014-5-23 11:01
发生死锁是由于进程请求资源时,资源被其他进程占有,且不可抢夺,而请求资源的进程本身有占着其他进程需要的资源,这样形成了一个循环,每个进程都占有资源,但是所需的其他资源被其他进程占有,使得所有的进程无法完成任务结束,形成死锁
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2