请编写一个多线程程序,实现两个线程,其中一个线程完成对某个对象的int成员变量的增加操作,即每次加1,另一个线程完成对该对象的成员变量的减操作,即每次减1,同时要保证该变量的值不会小于0,不会大于1,该变量的初始值为0.
package crease;
public class Sample {
int number = 0;
public synchronized void add(){
while(number > 0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
number ++;
System.out.print(number);
notify();
}
public synchronized void jian(){
while(number == 0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
number--;
System.out.print(number);
notify();
}
}
package crease;
public class TestSample {
/**
* @param args
*/
public static void main(String[] args) {
Sample sample = new Sample();
new AddThread(sample).start();
new JianThread(sample).start();
}
}
class AddThread extends Thread{
private Sample sample;
public AddThread(Sample sample){
this.sample = sample;
}
public void run(){
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
sample.add();
}
}
}
class JianThread extends Thread{
private Sample sample;
public JianThread(Sample sample){
this.sample = sample;
}
public void run(){
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
sample.jian();
}
}
}