【Java开源代码栏目提醒】:网学会员Java开源代码为您提供WaitTest.java参考,解决您在WaitTest.java学习中工作中的难题,参考学习。
import java.io.*;
public class WaitTest
{
static int _answer = 0;
public synchronized void awaitCond()
{
while(_answer!=5)
{
try
{
System.out.println("I am in awaitCond()");
wait();
}
catch(InterruptedException ex)
{
if(_answer==5) System.exit(0);
}
}
}
public synchronized void setAnswer(int answer)
{
System.out.println("setAnswer(int=" + answer + ")");
_answer = answer;
notify(); //wakeup the thread.
}
public static void main(String arg[])
{
WaitTest wt = new WaitTest();
Thread t1 = new Thread(new Wakeup(wt));
t1.start();
for(int i=0; i<20; i++)
{
if(i==2) wt.awaitCond();
System.out.println("main: " + i);
}
}
}
class Wakeup implements Runnable
{
WaitTest _wt;
public Wakeup(WaitTest wt)
{
_wt = wt;
//new object will not wake up old waiting object
//_wt = new WaitTest();
}
int i=0;
public void run()
{
while(i<40)
{
i++;
System.out.println("i="+i);
_wt.setAnswer(i);
}
}
}