老师你好,请问我的代码输出结果总是1、2 然后就进行不下去了,我把判断条件改为count%2==0输出就只有个1,也进行不下去了;到底哪里出了问题:
1、打印机类
package XCtest;
//创建实体类:实现两种打印方法:12A 34B 56C
//创建代理类
//多线程测试
public class Printer {
private int count=1;//第一步修改变量为2
//数字打印方法
public synchronized void print(int num) {
if(count%3==0) {
try {
super.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(num);//1.输出1,
count++;//1.count变为2
super.notifyAll();
}
//第二组数字打印方法
public synchronized void pirnt(int Num2) {
if(count%3!=0) {
try {
super.wait();//当count为2时,此线程仍然等待中
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(Num2);
count++;
super.notifyAll();
}
}
2、第一组数字线程
package XCtest;
public class NumXC implements Runnable{
@SuppressWarnings("unused")
private Printer printer;
public NumXC(Printer print) {
this.printer=print;
}
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=1;i<=10;i++) {
printer.print(i);
}
}
}
3、第二组数字线程
package XCtest;
public class Num2XC implements Runnable{
@SuppressWarnings("unused")
private Printer printer;
public Num2XC(Printer print) {
this.printer=print;
}
@Override
public void run() {
// TODO Auto-generated method stub
for(int j=20;j<=30;j++) {
printer.print(j);
}
}
}
4、测试类
package XCtest;
public class XCtest02 {
public static void main(String[] args) {
Printer p=new Printer();
NumXC n=new NumXC(p);
Num2XC c=new Num2XC(p);
Thread t1=new Thread(n);
Thread t2=new Thread(c);
t1.start();
t2.start();//测试结果产生了死锁?
}
}
测试结果:
