定义一个子线程类: 1.1 创建一个对象,用作锁对象; 1.2 重写Thread类的run方法; 1.3 使用同步代码块,保证每个线程能够按照要求连续打印语句; 1.4 调用getPriority方法获得当前线程的优先级; 1.5 如果线程的优先级为10,就打印5次“线程1正在运行”; 1.6 如果线程的优先级为6,就打印10次“线程2正在运行”; 2. 定义测试类: 2.1 在main方法中创建线程任务类的对象; 2.2 创建两个线程对象; 2.3 调用setPriority方法给线程对象设置优先级; 2.4 开启线程;
时间: 2023-06-12 08:04:13 浏览: 75
以下是代码实现:
```java
class MyThread extends Thread {
private Object lock;
public MyThread(Object lock) {
this.lock = lock;
}
@Override
public void run() {
synchronized (lock) {
int priority = getPriority();
if (priority == 10) {
for (int i = 0; i < 5; i++) {
System.out.println("线程1正在运行");
}
} else if (priority == 6) {
for (int i = 0; i < 10; i++) {
System.out.println("线程2正在运行");
}
}
}
}
}
public class TestThread {
public static void main(String[] args) {
Object lock = new Object();
MyThread t1 = new MyThread(lock);
MyThread t2 = new MyThread(lock);
t1.setPriority(10);
t2.setPriority(6);
t1.start();
t2.start();
}
}
```
在测试类中,我们创建了两个线程对象t1和t2,并设定它们的优先级分别为10和6。然后开启这两个线程,让它们执行各自的打印任务。在MyThread类中,我们使用同步代码块来保证每个线程能够按照要求连续打印语句。同时,我们还调用了getPriority方法获得当前线程的优先级,并根据不同的优先级执行不同的任务。
阅读全文