java中线程概念描述

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

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

  t1,

  t2是同一个对象(r)的两个线程,当其中的一个线程(例如:t1)开始执行run()方法时,由于run()受synchronized保护,所以同一个对象的其他线程(

  t2)无法访问synchronized方法(run方法)。只有当t1执行完后t2才有机会执行。

  示例4:

  publicclassThreadTestimplementsRunnable{
 publicvoidrun(){
  synchronized(this){
   for(inti=0;i<10;i++){
    System.out.print(""+i);
   }
  }
 }
 publicstaticvoidmain(String[]args){
  Runnabler=newThreadTest();
  Threadt1=newThread(r);
  Threadt2=newThread(r);
  t1.start();
  t2.start();
 }
}

  这个程序与示例3的运行结果一样。在可能的情况下,应该把保护范围缩到最小,可以用示例4的形式,this代表"这个对象"。没有必要把整个run()保护起来,

  run()中的代码只有一个for循环,所以只要保护for循环就可以了。

  示例5:

  publicclassThreadTestimplementsRunnable{
 publicvoidrun(){
  for(intk=0;k<5;k++){
   System.out.println(Thread.currentThread().getName()
            +":forloop:"+k);
  }
  synchronized(this){
   for(intk=0;k<5;k++){
    System.out.println(Thread.currentThread().getName()
             +":synchronizedforloop:"+k);
   }
  }
 }
 publicstaticvoidmain(String[]args){
  Runnabler=newThreadTest();
  Threadt1=newThread(r,"t1_name");
  Threadt2=newThread(r,"t2_name");
  t1.start();
  t2.start();
 }
}

责编:豆豆技术应用

正在加载评论...