java中线程概念描述

豆豆网   技术应用频道   2007年10月29日  【字号: 收藏本文

本文详细介绍java中线程概念描述

  运行结果:t1_name:forloop:0

  t1_name:forloop:1
  t1_name:forloop:2
  t2_name:forloop:0
  t1_name:forloop:3
  t2_name:forloop:1
  t1_name:forloop:4
  t2_name:forloop:2
  t1_name:synchronizedforloop:0
  t2_name:forloop:3
  t1_name:synchronizedforloop:1
  t2_name:forloop:4
  t1_name:synchronizedforloop:2
  t1_name:synchronizedforloop:3
  t1_name:synchronizedforloop:4
  t2_name:synchronizedforloop:0
  t2_name:synchronizedforloop:1
  t2_name:synchronizedforloop:2
  t2_name:synchronizedforloop:3
  t2_name:synchronizedforloop:4

  第一个for循环没有受synchronized保护。对于第一个for循环,t1,

  t2可以同时访问。运行结果表明t1执行到了k=2时,t2开始执行了。t1首先执行完了第一个for循环,此时还没有执行完第一个for循环(

  t2刚执行到k=2)。t1开始执行第二个for循环,当t1的第二个for循环执行到k=1时,t2的第一个for循环执行完了。

  t2想开始执行第二个for循环,但由于t1首先执行了第二个for循环,这个对象的锁标志自然在t1手中(

  synchronized方法的执行权也就落到了t1手中),在t1没执行完第二个for循环的时候,它是不会释放锁标志的。

  所以t2必须等到t1执行完第二个for循环后,它才可以执行第二个for循环

  三:sleep()

  示例6:

  publicclassThreadTestimplementsRunnable{
 publicvoidrun(){
  for(intk=0;k<5;k++){
   if(k==2){
    try{
     Thread.currentThread().sleep(5000);
    }
    catch(Exceptione){}
   }
   System.out.print(""+k);
  }
 }
 publicstaticvoidmain(String[]args){
  Runnabler=newThreadTest();
  Threadt=newThread(r);
  t.start();
 }
}

责编:豆豆技术应用

正在加载评论...