黑马程序员技术交流社区
标题:
求改代码
[打印本页]
作者:
pthuakai
时间:
2013-4-29 15:49
标题:
求改代码
本帖最后由 pthuakai 于 2013-5-6 16:00 编辑
代码出错,求高手帮忙
package TestPackege;
class Testdemo3 implements Runnable
{
private boolean flag;
Testdemo3(boolean flag)
{
this.flag =flag;
}
public void run()
{
if(flag)
{
System.out.println("if locka");
synchronized(MyLock.locka)
{
System.out.println("if lockb");
}
}
else
{
synchronized(MyLock.lockb)
{
System.out.println("else lockb");
synchronized(MyLock.locka)
{
System.out.println("else locka");
}
}
}
}
}
class MyLock
{
static Object locka=new Object();
static Object lockb=new Object();
}
public class DeadLockTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread t1=new Thread(new Runnable(true));
Thread t2=new Thread(new Runnable(false));
t1.start();
t2.start();
}
}
作者:
刘胜寒
时间:
2013-4-29 16:15
if(flag)
{
// 这个地方应该 是whle (true) Synchrionized(MyLock.locka)
System.out.println("if locka");
synchronized(MyLock.locka)
{
System.out.println("if lockb");
}
}
else
{// 添加一个while(true)
synchronized(MyLock.lockb)
{
System.out.println("else lockb");
synchronized(MyLock.locka)
{
System.out.println("else locka");
}
}
}
否则按照你的代码走的话 。 if 执行一下 然后 else 执行一次。
然后主线程结束
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2