1. 阅读下列程序,分析并上机检验其功能。 class DelayThread exends Thread { private static int count=0; private int no; private int delay; public DelayThread(){ count++; no=count; } public void run(){ try{ for (int i=0;i<10;i++){ delay=(int)(Math.random()*5000); sleep(delay); System.out.println(“线程”+no+“ 的延迟时间是 ”+delay); } }catch(InterruptedException e){} } } public class MyThread{ public static void main(String args[]){ DelayThread thread1=new DelayThread(); DelayThread thread2=new DelayThread(); thread1.start(); thread2.start(); try{ Thread.sleep(1000);} catch(InterruptedException e){ System.out.println(“线程出错!”); } } }
时间: 2023-11-27 12:52:02 浏览: 80
《Java程序设计》上机实验.doc
这段程序定义了一个名为 DelayThread 的线程类,它继承自 Thread 类。DelayThread 类中有三个实例变量:count、no 和 delay。count 为静态变量,用来记录创建的线程数;no 用来记录当前线程的编号;delay 用来存储当前线程的延迟时间。
DelayThread 类中有一个 run() 方法,该方法实现了线程的具体逻辑。在 run() 方法中,使用 for 循环来模拟线程的执行过程,每次循环中先生成一个随机延迟时间,然后使用 sleep() 方法来使线程暂停相应的时间,最后输出线程的编号和延迟时间。
MyThread 类是程序的主类,它创建了两个 DelayThread 的实例,并启动这两个线程。在启动线程之后,MyThread 类调用了 Thread.sleep() 方法,使主线程暂停 1000 毫秒,以便让两个子线程有足够的时间来执行。最后,程序结束。
上机测试代码如下:
```java
class DelayThread extends Thread {
private static int count = 0;
private int no;
private int delay;
public DelayThread() {
count++;
no = count;
}
public void run() {
try {
for (int i = 0; i < 10; i++) {
delay = (int) (Math.random() * 5000);
sleep(delay);
System.out.println("线程" + no + " 的延迟时间是 " + delay);
}
} catch (InterruptedException e) {
}
}
}
public class MyThread {
public static void main(String args[]) {
DelayThread thread1 = new DelayThread();
DelayThread thread2 = new DelayThread();
thread1.start();
thread2.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("线程出错!");
}
}
}
```
运行结果可能如下:
```
线程1 的延迟时间是 3274
线程2 的延迟时间是 2087
线程1 的延迟时间是 2590
线程2 的延迟时间是 3317
线程1 的延迟时间是 2223
线程2 的延迟时间是 3480
线程1 的延迟时间是 4528
线程2 的延迟时间是 1485
线程1 的延迟时间是 4876
线程2 的延迟时间是 2787
线程1 的延迟时间是 3589
线程2 的延迟时间是 2626
线程1 的延迟时间是 4645
线程2 的延迟时间是 2617
线程1 的延迟时间是 3675
线程2 的延迟时间是 1675
线程1 的延迟时间是 3815
线程2 的延迟时间是 1040
线程1 的延迟时间是 4264
线程2 的延迟时间是 2804
线程1 的延迟时间是 2731
线程2 的延迟时间是 3185
```
可以看到,程序正常运行,两个线程分别输出了自己的编号和随机生成的延迟时间,并且主线程在启动子线程之后暂停了一段时间。
阅读全文