)编写主类Test声明创建两个线程类的对象,测试这两个线程对象在以下条件下的运行结果。 A.将两个线程设为同优先级,比较运行情况。 B.将两个线程设为不同优先级,比较运行情况。 C.将两个线程设为同优先级,比较线程调用sleep()之后的运行情况。
时间: 2024-03-01 13:51:50 浏览: 60
按要求自定义类MyRunnable。 2、创建线程池对象,执行两个线程。
好的,您的问题是关于Java多线程编程的。以下是一个简单的示例代码,用于测试两个线程在不同条件下的运行情况:
```java
public class Test {
public static void main(String[] args) {
// 创建两个线程对象
MyThread thread1 = new MyThread("Thread 1");
MyThread thread2 = new MyThread("Thread 2");
// 将两个线程设为同优先级,比较运行情况
thread1.setPriority(Thread.NORM_PRIORITY);
thread2.setPriority(Thread.NORM_PRIORITY);
thread1.start();
thread2.start();
// 将两个线程设为不同优先级,比较运行情况
thread1.setPriority(Thread.MAX_PRIORITY);
thread2.setPriority(Thread.MIN_PRIORITY);
thread1.start();
thread2.start();
// 将两个线程设为同优先级,比较线程调用sleep()之后的运行情况
thread1.setPriority(Thread.NORM_PRIORITY);
thread2.setPriority(Thread.NORM_PRIORITY);
thread1.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread2.start();
}
}
class MyThread extends Thread {
public MyThread(String name) {
super(name);
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(getName() + ": " + i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在这个示例中,我们创建了两个线程对象 `thread1` 和 `thread2`,并分别测试了三种不同的条件下它们的运行情况:
- 将两个线程设为同优先级,比较运行情况
- 在这种情况下,两个线程的运行情况应该是基本相同的,因为它们的优先级相同。
- 将两个线程设为不同优先级,比较运行情况
- 在这种情况下,优先级较高的线程 `thread1` 应该比优先级较低的线程 `thread2` 具有更高的运行速度。
- 将两个线程设为同优先级,比较线程调用sleep()之后的运行情况
- 在这种情况下,我们让线程 `thread1` 先开始运行,并调用 `Thread.sleep(1000)` 使其休眠 1 秒钟,然后再让线程 `thread2` 开始运行。此时,我们应该看到线程 `thread2` 在线程 `thread1` 休眠期间被阻塞,只有当线程 `thread1` 重新开始运行后,线程 `thread2` 才能开始运行。
阅读全文