本帖最后由 kane 于 2014-12-3 13:26 编辑
/*
多线程练习
需求:在t1调用join()下,且t1的run方法里调用wait()无限等待,调用interrupt()方法唤醒主函数继续运行,并且与t2交替争夺资源
思路:我想通过flag的值的判断来唤醒主函数,从而达到t1继续等待,t2和主函数继续交替运行。
*/
class Res //判断值
{
boolean flag=true;
}
class Dem implements Runnable
{
private Res r;
Dem(Res r)
{
this.r=r;
}
public synchronized void run()//t1线程执行的方法
{
try
{
while(r.flag)
wait();
}
catch(InterruptedException e)
{
System.out.println(Thread.currentThread().getName()+"---t0--Exception---");
r.flag=false;
}
System.out.println(Thread.currentThread().getName()+"---t0---RUN----");
}
}
class Cem implements Runnable
{
public synchronized void run()//t2线程执行的方法
{
for(int x=0;x<40;x++)
{
System.out.println(Thread.currentThread().getName()+"---t1-----"+x);
}
}
}
class QDemo7
{
public static void main(String[] args) throws Exception
{
Res r=new Res();
Dem d=new Dem(r);
Cem c=new Cem();
Thread t1=new Thread(d);
Thread t2=new Thread(c);
t1.start();
t2.start();
for(int x=0;x<40;x++)
{
System.out.println(Thread.currentThread().getName()+"---main-----"+x);
t1.join();
Thread.currentThread().interrupt();
}
System.out.println("over");
}
}
运行结果如图,执行到t1就无限等待了,求解
|
|