packageThread;classMyprint{intsize;//26个字母inti=0;publicMyprint(intsize){this.size=size;}publicsynchronizedvoidDa(){for(inti=0;i<26;i++){System.out.println((char)('A'+i...
package Thread;
class Myprint{
int size; //26个字母
int i=0;
public Myprint(int size)
{
this.size=size;
}
public synchronized void Da()
{
for(int i=0;i<26;i++)
{
System.out.println((char)('A'+i));//大写打印之后等待
try
{
wait();
}catch(Exception e){}
}
notify();//唤醒小写
}
public synchronized void Xiao()
{
for(int i=0;i<26;i++)
{
System.out.println((char)('a'+i)); //小写打印之后等待
try
{
wait();
}catch(Exception e){}
}
notify();//唤醒大写
}
}
class Capital extends Thread{
Myprint my=null;
public Capital(Myprint my){
this.my=my;
}
@Override
public void run(){
while(my.i
{
my.Da();//打印大写
}
}
}
class Lowercase extends Thread{
Myprint my=null;
public Lowercase(Myprint my){
this.my=my;
}
@Override
public void run(){
while(my.i
{
my.Xiao();//打印小写
}
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Myprint m=new Myprint(26);
new Capital(m).start();
new Lowercase(m).start();
}
}
这是我的代码,运行结果只有:A a 。有谁知道该怎么让一个线程打印大写,一个线程打印小写,然后两者交替打印吗? 感觉好像我的wait()和notify()出了问题,但是不知道具体是什么问题。
展开