java多线程,帮我写个程序,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:27:08
实现两个线程,一个线程打印1-52,另一个线程打印A-Z,要求输出的结果:
1 2 A 3 4 B 5 6 C 7 8 D 9 10 11 12 ... 52 E F G H I J K ... X Y Z

这个涉及到JAVA多线程加锁,这方面最著名的就是生产者与消费者问题,如果楼主能理解它,解决这个问题就不难了,建议楼主先去学习一下。
我写了一个程序,能满足楼主的要求,下面给出源代码,仅供参考。
多罗嗦一句,新建一个JAVA文件,起名为PrintTest,然后把下面的代码全部拷进去,编译执行即可。

源代码:

class Content {
private int number[] = new int[52];
private char letter[] = new char[26];
private char lock = 'n';

public Content() {
for(int i=0; i<52; i++)
number[i] = i+1;
char k = 65;
for(int i=0; i<26; i++, k++)
letter[i] = k;
}

public synchronized void printNumber() {
for(int i=0; i<number.length; i++) {
while(lock == 'l') {
try {
this.notify();
this.wait();
} catch(InterruptedException e) {}
}
System.out.print(number[i] + " ");
if(number[i]==2 || number[i]==4 || number[i]==6 ||
number[i]==8 || number[i] == 52)
lock = 'l';
if(number[i] == 52)
this.