编写有三个不同优先级线程的程序,三个线程分别输出10个a,b,c,每输出一个停(sleep)50毫秒
时间: 2024-02-23 09:58:34 浏览: 81
以下是一个简单的Java程序,其中包含三个不同优先级的线程,它们分别输出10个'a'、'b'、'c',并且每输出一个字符就停(sleep)50毫秒:
```
public class ThreadPriorityExample {
public static void main(String[] args) {
Thread thread1 = new Thread(new PrintChar('a'), "Thread 1");
Thread thread2 = new Thread(new PrintChar('b'), "Thread 2");
Thread thread3 = new Thread(new PrintChar('c'), "Thread 3");
// 设置线程优先级
thread1.setPriority(Thread.MIN_PRIORITY);
thread2.setPriority(Thread.NORM_PRIORITY);
thread3.setPriority(Thread.MAX_PRIORITY);
// 启动线程
thread1.start();
thread2.start();
thread3.start();
}
}
class PrintChar implements Runnable {
private char charToPrint;
public PrintChar(char c) {
charToPrint = c;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.print(charToPrint + " ");
try {
Thread.sleep(50); // 线程休眠50毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在这个程序中,我们与上一个程序一样,定义了一个PrintChar类,它实现了Runnable接口,用于输出指定的字符。不同之处在于,我们在run方法中添加了一个线程休眠的语句,每次输出一个字符后,线程会休眠50毫秒。
程序的输出结果可能类似于以下内容:
```
a b c a b c a b c a b c a b c a b c a b c a b c a b c
```
在这个输出中,我们可以看到三个线程交替输出'a'、'b'、'c',并且每输出一个字符都会停顿50毫秒。线程的优先级依然影响了线程的执行顺序,但是由于每个线程都会停顿50毫秒,因此输出的速度并不是很快,可以更加明显地看到线程之间的交替执行。
阅读全文