黑马程序员技术交流社区
标题:
死锁程序,还可以再优化吗?
[打印本页]
作者:
鹰击长空168
时间:
2015-1-11 18:02
标题:
死锁程序,还可以再优化吗?
//创建一个死锁程序,采用同步中嵌套同步的方式
class LockBase implements Runnable
{
static Object obj1=new Object();
static Object obj2=new Object();
/*若obj1,obj2均用private修饰,则t1和t2中的obj1,obj2不同,不构成死锁
静态成员随着类的加载而存在于内存的方法区中,为共享数据;
私有成员随着对象的建立而存在,属于不同对象。
*/
private boolean flag;
LockBase(boolean flag)
{
this.flag=flag;
}
public void run()
{
if(flag)
{
for (;;)
{
synchronized(obj1)
{
System.out.println(Thread.currentThread().getName()+"...Aobj1..run");
synchronized(obj2)
{
System.out.println(Thread.currentThread().getName()+"...Aobj2..run");
}
}
}
}
else
for (;;)
{
synchronized(obj2)
{
System.out.println(Thread.currentThread().getName()+"...Bobj2..run");
synchronized(obj1)
{
System.out.println(Thread.currentThread().getName()+"...Bobj1..run");
}
}
}
}
}
class LockDeadDemo
{
public static void main(String [] args)
{
Thread t1=new Thread(new LockBase(true));
Thread t2=new Thread(new LockBase(false));
t1.start();
t2.start();
}
}
作者:
不给吃鸭梨
时间:
2015-1-11 18:19
本来就是要避免的问题,为什么还要优化呢?而且死锁的产生不仅仅是线程间的问题,如果一个进程资源分配不足也会有死锁的。
作者:
鹰击长空168
时间:
2015-1-11 21:11
不给吃鸭梨 发表于 2015-1-11 18:19
本来就是要避免的问题,为什么还要优化呢?而且死锁的产生不仅仅是线程间的问题,如果一个进程资源分配不足 ...
嗯嗯!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2