state-threads,
publicsclassthreadstatetest {
publicstaticvoidmain(String[]args){
//令人惊讶
//Compileonlyiconst_1
系统。出去。println(( hello 123 ==( hel lo 123)));
Threadt=newThread(){
publicvidrun(){
系统。出去。println( X: thread。当前线程().getState());
}
};
系统。出去。println(t . getstate());
t。start();
t=newThread(){
privateObjectlock=new object();
publicvidrun(){
同步(锁定){
尝试{
系统。出去。println( getting lock。wait());
锁定。等待(2000年);
} catch(InterruptedExceptioninterruptedEx){
中断的索引。printstacktrace();
}
}
}
};
t。start();
尝试{
线程。睡眠(1000);
} catch(中断的异常){
}
系统。出去。println(t . getstate());
尝试{
线程。睡眠(3000);
} catch(中断的异常){
}
系统。出去。println(t . getstate());
finalObjectsharedLock=new object();
threadanotherthreadholdstlockforawhile=new thread(){
publicvidrun(){
同步(共享锁){
系统。出去。println(getName() holdingsharedLock );
尝试{
线程。睡眠(50000);
} catch(中断的异常){
e。printstacktrace();
}
}
}
};
另一个anotherthreadholdsthlocforwhile。start();
持有asec();
系统。出去。println( XX: anotherthreadholdstlockforwhile。getstate());
t=newThread(){
publicvidrun(){
同步(共享锁){
系统。出去。println( Gotthelock );
}
}
};
t。start();
持有asec();
系统。出去。println( YY: t . getstate());
}
privatesticvoidholdasec(){
尝试{
线程。睡眠(5000);
} catch(中断的异常){
e。printstacktrace();
}
}
}
如题,上面是我按照下面网址参考写的测试代码,仅仅是测试。
http://www.jguru.com/faq/view.jsp?EID=1253344
http://shihaiyang.iteye.com/blog/437902
http://www。科学。UVA。nl/ICT/OSS文档/Java/教程/Java/线程/状态。超文本标记语言
http://blog.csdn.net/westwin/article/details/4658602
http://www。杨和荣。com/Java-Tools/jstack-jhat-Java-Heap-Analysis-tool。超文本标记语言
http://堆栈溢出。com/questions/7497793/understanding-Java-lang-thread-state-waiting-parking
-
线程.睡眠()将当前线程发送到"不可运行"状态一段时间。线程保持它已经获得的监视器,也就是说,如果线程当前在一个同步的块或方法中,没有其他线程可以进入这个块或方法。如果另一个线程调用中断(),它将唤醒睡眠线程。
注意,睡觉是一个静态方法,这意味着它总是影响当前线程(执行睡眠方法的线程)。一个常见的错误是调用t.sleep(),其中t是不同的线程;即使这样,也会休眠的是当前线程,而不是t线程。
暂停()已被否决。使用它可以暂停当前线程以外的线程。一个挂起的线程保持它所有的监视器,因为这种状态是不可中断的,所以容易死锁。
-
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。