需求是这样的,需要两个线程同时操作 一个对象的成员变量,让其按照 1 0 1 0 1 0 1 0 1 0 1 0 这样的格式进行输出
public class MyObject {
private int count;
public synchronized void increase(){
if(count == 1){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
count++;
System.out.println("count : " + count);
notify();
}
//方法上加锁,那么锁对象就是 当前调用者对象
public synchronized void decrease(){
if(count == 0){
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
count--;
System.out.println("count : " + count);
notify();
}
}
// 加一线程
public class IncreaseThread extends Thread{
private MyObject mMyobject;
public IncreaseThread(MyObject myobject){
this.mMyobject = myobject;
}
@Override
public void run() {
for (int i = 0; i < 30; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mMyobject.increase();
}
}
}
// 减一线程
public class DecreaseThread extends Thread{
private MyObject mMyobject;
public DecreaseThread(MyObject myobject){
this.mMyobject = myobject;
}
@Override
public void run() {
for (int i = 0; i < 30; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mMyobject.decrease();
}
}
}
MyObject myObject = new MyObject();
IncreaseThread increaseThread = new IncreaseThread(myObject);
DecreaseThread decreaseThread = new DecreaseThread(myObject);
increaseThread.start();
decreaseThread.start();