public class Sample
{
public static void main(String args[])
{
SampleTest sampletest=new SampleTest();
IncreaseThread it=new IncreaseThread(sampletest);
DecreaseThread dt=new DecreaseThread(sampletest);
it.start();
dt.start();
}
}
class SampleTest
{
private int number;
public synchronized void increase()
{
while(number!=0)
{
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
number++;
System.out.println(number);
this.notify();
}
public synchronized void decrease()
{
while(number==0)
{
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
number--;
System.out.println(number);
this.notify();
}
}
class IncreaseThread extends Thread
{
private SampleTest sampletest;
public IncreaseThread(SampleTest sampletest)
{
this.sampletest=sampletest;
}
@Override
public void run()
{
// TODO Auto-generated method stub
for(int i=0;i<20;i++)
{
try {
Thread.sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sampletest.increase();
}
}
}
class DecreaseThread extends Thread
{
private SampleTest sampletest;
public DecreaseThread(SampleTest sampletest)
{
this.sampletest=sampletest;
}
@Override
public void run()
{
// TODO Auto-generated method stub
for(int i=0;i<20;i++)
{
try {
Thread.sleep((long)(Math.random()*1000));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sampletest.decrease();
}
}
}
wait与notify实现多线程的协调通信
最新推荐文章于 2019-11-15 11:38:01 发布