|
以下实例演示了如何监测线程的状态: Main.java 文件class MyThread extends Thread {
boolean waiting = true ;
boolean ready = false ;
MyThread ( ) {
}
public void run ( ) {
String thrdName = Thread . currentThread ( ) . getName ( ) ;
System . out . println ( thrdName + " starting. " ) ;
while ( waiting )
System . out . println ( " waiting: " + waiting ) ;
System . out . println ( " waiting... " ) ;
startWait ( ) ;
try {
Thread . sleep ( 1000 ) ;
}
catch ( Exception exc ) {
System . out . println ( thrdName + " interrupted. " ) ;
}
System . out . println ( thrdName + " terminating. " ) ;
}
synchronized void startWait ( ) {
try {
while ( ! ready ) wait ( ) ;
}
catch ( InterruptedException exc ) {
System . out . println ( " wait() interrupted " ) ;
}
}
synchronized void notice ( ) {
ready = true ;
notify ( ) ;
}
}
public class Main {
public static void main ( String args [ ] )
throws Exception {
MyThread thrd = new MyThread ( ) ;
thrd . setName ( " MyThread #1 " ) ;
showThreadStatus ( thrd ) ;
thrd . start ( ) ;
Thread . sleep ( 50 ) ;
showThreadStatus ( thrd ) ;
thrd . waiting = false ;
Thread . sleep ( 50 ) ;
showThreadStatus ( thrd ) ;
thrd . notice ( ) ;
Thread . sleep ( 50 ) ;
showThreadStatus ( thrd ) ;
while ( thrd . isAlive ( ) )
System . out . println ( " alive " ) ;
showThreadStatus ( thrd ) ;
}
static void showThreadStatus ( Thread thrd ) {
System . out . println ( thrd . getName ( ) + " Alive:= " + thrd . isAlive ( ) + " State:= " + thrd . getState ( ) ) ;
}
} |
以上代码运行输出结果为:
……
alive
alive
MyThread #1 terminating.
alive
……
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 flybird 在 2020-01-23 21:17:04 重新编辑]
|
网站系统异常
系统异常信息 |
Request URL:
http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=1581
java.lang.NullPointerException
如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员。
|
|