毕老师讲的死锁例子,我怎么看,也看不出错误,为什么运行报错?代码如下:
class Test implements Runnale
{
private boolean flag;
Test(boolean flag)
{
this.flag = flag;
}
public void run()
{
if(flag)
{
synchronized(MyLock.locka)
{
System.out.println("if locka");
synchronized(MyLock.lockb)
{
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();
}
class DeadLock1
{
public static void main(String[] args)
{
Thread t1 = new Thread(new Test(true));
Thread t2 = new Thread(new Test(false));
t1.start();
t2.start();
}
}
报错信息如下:
DeadLock1.java:53: 错误: 对于Thread(Test), 找不到合适的构造器
Thread t2 = new Thread(new Test(false));
^
构造器 Thread.Thread(ThreadGroup,Runnable,String,long)不适用
(实际参数列表和形式参数列表长度不同)
构造器 Thread.Thread(ThreadGroup,Runnable,String)不适用
(实际参数列表和形式参数列表长度不同)
构造器 Thread.Thread(Runnable,String)不适用
(实际参数列表和形式参数列表长度不同)
构造器 Thread.Thread(ThreadGroup,String)不适用
(实际参数列表和形式参数列表长度不同)
构造器 Thread.Thread(String)不适用
(无法通过方法调用转换将实际参数Test转换为String)
构造器 Thread.Thread(ThreadGroup,Runnable)不适用
(实际参数列表和形式参数列表长度不同)
构造器 Thread.Thread(Runnable)不适用
(无法通过方法调用转换将实际参数Test转换为Runnable)
构造器 Thread.Thread()不适用
(实际参数列表和形式参数列表长度不同) |