(1)编写两个线程类,分别命名为First和Second,可选用继承Thread类或者执行Runnable接口的方法创建这两个线程类,线程可循环3次输出自己线程的名字; (2)编写主类Test声明创建两个线程类的对象,测试这两个线程对象在以下条件下的运行结果。 A.将两个线程设为同优先级,比较运行情况。 B.将两个线程设为不同优先级,比较运行情况。 C.将两个线程设为同优先级,比较线程调用sleep()之后的运行情况。
时间: 2024-03-03 21:50:20 浏览: 19
好的,我可以为您解答这个问题。
首先,我们先创建两个线程类,分别是First和Second:
```
class First extends Thread {
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println("First");
}
}
}
class Second implements Runnable {
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println("Second");
}
}
}
```
接下来,我们编写主类Test,测试这两个线程对象在不同条件下的运行结果:
```
public class Test {
public static void main(String[] args) {
// 创建两个线程对象
Thread t1 = new First();
Thread t2 = new Thread(new Second());
// A. 将两个线程设为同优先级,比较运行情况
t1.setPriority(Thread.NORM_PRIORITY);
t2.setPriority(Thread.NORM_PRIORITY);
t1.start();
t2.start();
// B. 将两个线程设为不同优先级,比较运行情况
t1.setPriority(Thread.MIN_PRIORITY);
t2.setPriority(Thread.MAX_PRIORITY);
t1.start();
t2.start();
// C. 将两个线程设为同优先级,比较线程调用sleep()之后的运行情况
t1.setPriority(Thread.NORM_PRIORITY);
t2.setPriority(Thread.NORM_PRIORITY);
try {
t1.start();
Thread.sleep(1000);
t2.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们分别对两个线程对象设置不同的优先级,并且测试了线程调用sleep()之后的运行情况。
需要注意的是,线程的优先级并不能完全决定线程的执行顺序,只是让高优先级的线程更有机会优先执行。线程的调度是由操作系统决定的,因此线程的执行顺序可能会因为操作系统的不同而有所差异。