未分类题

阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
下面的Java程序演示了程序竞争资源(Mutex的实例对象)而引起程序死锁的一种例子。
【Java程序】
import java.applet.*;
import java.awt.*;
//此处声明一个互斥类
class Mutex { }
class A extends (1)
{
private Mutex first,second;
public A(Mutex f,Mutex s)
{
first = f;
second = s;
}
public void run()
{
//锁定first变量
(2) (first)
{
try
{ //本线程挂起,等待重新调度
Thread.sleep(1); //注意此处(1)不是小题序号
}
catch(InterruptedException e){}
System. out. println('threadA got first mutex');
(2) (second) //锁定second变量
{ //do something
System. out. println('threadA got second mutex');
} //释放second变量
} //释放first变量
}
}
class B extends (1)
{
private Mutex first,second;
public B(Mutex f,Mutex s)
{
(3) ;
second = s;
}
public void run()
{
(2) (second) //锁定second变量
{
//do something
try
{
Thread.sleep(((int)(3*Math.random()))*1000);
//本线程挂起,等待重新调度
}
catch(InterruptedException e){}
System.out.println('threadB got second mutex');
(2) (first) //锁定first变量
{
//do something
System.out.println('threadB got first mutex');
} //释放first变量
} //释放second变量
}
}
public class DeadlockExample
{
public static void main(String arg[])
{
Mutex mutexX = new Mutex();
Mutex mutexY = new Mutex();
AthreadA = new A(mutexX,mutexY);
B threadB = new B (4);
threadA.(5);
threadB.start();
}
}

A.applet.*;
B.awt.*;
C.sleep(1);
D.sleep(((int)(3*Math.random()))*1000);
E.out.println('threadB
F.out.println('threadB
G.(5);
H.start();


【参考答案】

(1)Thread
(1)Thread 解析:从下面的程序不难看出,类A、B均是线程类,因此需要继承自类Thread。