public class LifeCycleTest { public static void main(String[] args) throws Exception {
LifeThread thread = new LifeThread();
thread.start();
Thread.sleep(1000);
thread.wait(10000);
thread.interrupt();
}}class LifeThread extends Thread{
public void run(){
while(!this.isInterrupted())
System.out.println("LifeThread:" + this.getName());
}
}
上诉代码不能成功停止线程,因为加入thread.wait(10000);去掉了就可以了。为什么,求高手帮忙解答wait的影响
如果想让主线程等待,Thread.sleep就可以了
如果想用wait来让主线程等待,那应该是另一个线程先获取某个对象的锁,然后主线程再请求该对象锁而发生等待。
如果不正确地管理wait/notify调用,应用程序可能会抛出IllegalMonitorStateException,例如,若不拥有对象的锁标记,而试图用wait/notify协调共享对象资源,应用程序将抛出IllegalMonitorStateException实际上thread.interrupt();这行并无调用,偿试修改下代码看效果
try
{
thread.wait(10000);
}
catch (Exception e)
{
e.printStackTrace();
}