黑马程序员技术交流社区
标题:
关于解决wait()抛出异常的一点小疑惑
[打印本页]
作者:
陈虹旭
时间:
2012-10-16 14:44
标题:
关于解决wait()抛出异常的一点小疑惑
class StopThread implements Runnable
{
private boolean flag = true;
public synchronized void run()
{
while(flag)
{
try
{
wait();//<FONT color=red>我就是想知道这里wait了不就抛出异常了吗,下面直接在函数中解决异常,解决的时候是一条输出语句,但是为什么在编译运行后却看不到catch块中的打印语句呢?</FONT>
}
catch (InterruptedException e)
{
System.out.println(Thread.currentThread().getName()+"......Exception");
}
System.out.println(Thread.currentThread().getName()+"......run");
}
}
public void changeFlag()
{
flag = false;
}
}
class StopThreadDemo
{
public static void main(String[] args)
{
StopThread st = new StopThread();
Thread t1 = new Thread(st);
Thread t2 = new Thread(st);
t1.start();
t2.start();
int num = 0;
while(true)
{
if(num++ == 60)
{
st.changeFlag();
break;
}
System.out.println(Thread.currentThread().getName()+"......."+num);
}
System.out.println("Over");
}
}
复制代码
求解释!
作者:
陈虹旭
时间:
2012-10-16 16:14
ssshyu 发表于 2012-10-16 16:03
关于解决wait()抛出异常这个问题中,
Thread t1 = new Thread(st);
不是吧?这两句话的含义不就是定义两个线程t1、t2接收Runnable接口子类的初始化对象吗,为了对子类中的run()方法进行线程的访问操作...
我是不理解像wait()和sleep()这样处于冻结状态的方法,在api文档中写的都会抛出异常,以前老师写的catch块都不会进行处理,这次的是有处理语句了,为什么运行结果中就是没有处理代码的打印呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2