state-threads,

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: