java中线程概念描述

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

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

  在这个程序中,run()被加上了synchronized关键字。在main方法中创建了两个线程。你可能会认为此程序的运行结果一定为:0123456789

  0123456789。但你错了!这个程序中synchronized关键字保护的不是共享数据(

  其实在这个程序中synchronized关键字没有起到任何作用,此程序的运行结果是不可预先确定的)。这个程序中的t1,t2是两个对象(r1,

  r2)的线程。JAVA是面向对象的程序设计语言,不同的对象的数据是不同的,r1,

  r2有各自的run()方法,而synchronized使同一个对象的多个线程,

  在某个时刻只有其中的一个线程可以访问这个对象的synchronized数据。每个对象都有一个"锁标志",

  当这个对象的一个线程访问这个对象的某个synchronized数据时,这个对象的所有被synchronized修饰的数据将被上锁(因为"锁标志"

  被当前线程拿走了),只有当前线程访问完它要访问的synchronized数据时,当前线程才会释放"锁标志",

  这样同一个对象的其它线程才有机会访问synchronized数据。

  示例3:

  publicclassThreadTestimplementsRunnable{
 publicsynchronizedvoidrun(){
  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();
 }
}

  如果你运行1000次这个程序,它的输出结果也一定每次都是:01234567890123456789。因为这里的synchronized保护的是共享数据。

责编:豆豆技术应用

正在加载评论...