关于线程的一道题,新人求讲解!感谢!
题目要求:设计4个线程对象,两个线程执行加操作,两个执行减操作。
我想问下大家,我这么写有问题吗?然后我想实现的效果是,一加一减,交替进行。不知道该如何修改了,希望大家帮帮忙!谢谢!
以下代码:
public class 线程练习2 {
public static void main(String args[]){
Number nu=new Number();
Thread t1=new Thread(new AddNum(nu));
Thread t2=new Thread(new AddNum(nu));
Thread t3=new Thread(new SubNum(nu));
Thread t4=new Thread(new SubNum(nu));
t1.start();
t3.start();
t2.start();
t4.start();
}
}
class AddNum implements Runnable{
// private boolean flag=false;
private Number nu=null;
public AddNum(Number nu){
this.nu=nu;
}
@Override
public void run() {
int numNow = this.nu.getNum() + 1;
this.nu.setNum(numNow);
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class SubNum implements Runnable{
private Number nu=null;
public SubNum(Number nu){
this.nu=nu;
}
@Override
public void run() {
int numNow=this.nu.getNum()-1;
this.nu.setNum(numNow);
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Number{
private int num=10;
public synchronized void setNum(int num){
this.num=num;
System.out.println("Now,the number is: "+getNum());
}
public int getNum(){
return num;
}
}