java定义一个子线程类: 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 16:05:02 浏览: 88
下面是Java定义一个子线程类的代码:
```
public class MyThread extends Thread {
private final 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正在运行");
}
}
}
}
}
```
在这个子线程类中,我们重写了Thread类的run方法,在其中使用同步代码块来保证每个线程能够按照要求连续打印语句。在同步代码块中,我们首先调用了getPriority方法获得当前线程的优先级,然后根据不同的优先级打印不同的语句。
下面是Java定义测试类的代码:
```
public class MyThreadTest {
public static void main(String[] args) {
Object lock = new Object();
MyThread thread1 = new MyThread(lock);
MyThread thread2 = new MyThread(lock);
thread1.setPriority(10);
thread2.setPriority(6);
thread1.start();
thread2.start();
}
}
```
在测试类中,我们首先创建了一个Object对象作为锁对象,然后创建了两个MyThread线程对象。接着,我们调用了setPriority方法给线程对象设置优先级,然后开启线程。在运行时,我们可以看到线程1先打印5次“线程1正在运行”,然后线程2打印10次“线程2正在运行”。这是因为线程1的优先级比线程2高,所以线程1先执行。
阅读全文