黑马程序员技术交流社区
标题:
Java演练(12):多线程-死锁
[打印本页]
作者:
hoshan1
时间:
2015-11-14 12:12
标题:
Java演练(12):多线程-死锁
演练代码如下:
class Lock implements Runnable
{
//定义一个判断标记
private boolean flag;
//通过构造函数给判断标记赋值
Lock(boolean flag)
{
this.flag = flag;
}
//定义两个静态对象,用作锁对象
static Object locka = new Object();
static Object lockb = new Object();
//复写run方法
public void run()
{
if(flag)
{
while(true)
{
//定义嵌套锁并打印结果
synchronized(locka)
{
System.out.println(Thread.currentThread().getName()+"...if locka ");
synchronized(lockb)
{
System.out.println(Thread.currentThread().getName()+"..if lockb");
}
}
}
}
else
{
while(true)
{
//定义嵌套锁并打印结果
synchronized(lockb)
{
System.out.println(Thread.currentThread().getName()+"..else lockb");
synchronized(locka)
{
System.out.println(Thread.currentThread().getName()+".....else locka");
}
}
}
}
}
}
public class Test
{
public static void main(String[] args)
{
//定义两个线程
Thread t1 = new Thread(new Lock(true),"我是线程一");
Thread t2 = new Thread(new Lock(false),"我是线程二");
//开启两个线程
t1.start();
t2.start();
}
}
通过此代码演练,可以让我们知道死锁是怎么形成的,避免后续的程序设计中犯相同的错误
作者:
许佳鑫
时间:
2015-11-14 21:14
哦,这样啊
作者:
18537947462
时间:
2015-11-14 21:30
先顶再看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2