今天用wait()和notify()进行线程通信实现输出12A34B56C.....格式的长字符,写了一段看起来很不成熟的代码,然后还把自己绕晕了= =、原来是因为在for循环里使用if-elseif结构调用wait方法导致出错,找了好久的bug终于反应过来了,为了下次不再犯类似的错误,在这里进行一下总结。
下面就是我那不太成熟的代码:
//打印字母的线程类
public class PrintAlphabet implements Runnable {
private MyPrint myprint;
@Override
public void run() {
myprint.printAlphabet();
}
public PrintAlphabet(MyPrint myprint) {
super();
this.myprint = myprint;
}
}
//打印数字的线程类
public class PrintCount implements Runnable{
private MyPrint myprint;
@Override
public void run() {
myprint.printCount();
}
public PrintCount(MyPrint myprint) {
super();
this.myprint = myprint;
}
}
//打印字母的方法
public synchronized void printAlphabet(){
for(;number<78;number++){
if(number%3==0){
try {
wait();
} catch