java请编写程序利用线程输出从A到Z的字母每隔一秒钟输出一个字母请按顺序输出。
可以使用Java中的Thread和Runnable接口来编写一个多线程程序来实现这个要求。以下是一个可能的实现:
public class AlphabetPrinter implements Runnable {
private static final Object lock = new Object();
private static char currentLetter = 'A';
private char letter;
public AlphabetPrinter(char letter) {
this.letter = letter;
}
@Override
public void run() {
synchronized (lock) {
try {
while (currentLetter != letter) {
lock.wait();
}
System.out.println(letter);
currentLetter++;
lock.notifyAll();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
int numberOfThreads = 26;
Thread[] threads = new Thread[numberOfThreads];
for (char letter = 'A'; letter <= 'Z'; letter++) {
Runnable runnable = new AlphabetPrinter(letter);
threads[letter - 'A'] = new Thread(runnable);
threads[letter - 'A'].start();
}
}
}
在这个程序中,我们创建了26个线程,每个线程负责输出一个字母。在每个线程中,我们使用了一个共享的锁对象lock和一个共享的currentLetter变量来保证每个线程按顺序输出字母。
在每个线程的run()方法中,我们使用了一个while循环来判断当前线程应该输出的字母是否是currentLetter,如果不是,则调用lock.wait()方法使线程进入等待状态,直到被唤醒。当当前线程应该输出的字母是currentLetter时,输出字母并将currentLetter加1,然后调用lock.notifyAll()方法唤醒其他等待的线程。
在main()方法中,我们创建了26个AlphabetPrinter对象,并将它们传递给Thread构造函数来创建并启动线程。由于每个线程负责输出一个字母,因此每个线程的字母是按顺序输出的
原文地址: http://www.cveoy.top/t/topic/inLr 著作权归作者所有。请勿转载和采集!