现在的位置: 首页 > 综合 > 正文

j2se 局部变量和成员变量对线程的影响

2013年08月21日 ⁄ 综合 ⁄ 共 628字 ⁄ 字号 评论关闭

先看例子:

public class ThreadTest3_zhongyao {
 public static void main(String[] args) {
  Runnable r = new MyThread();
  Thread t1 = new Thread(r);
  Thread t2 = new Thread(r);
  t1.start();
  t2.start();
 }
}

class MyThread implements Runnable {
 //int i;
 @Override
 public void run() {
  int i = 0;
  while (true) {
   System.out.println("number" + i++);
   try {
    Thread.sleep((long) (1000 * Math.random()));
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   if (i == 50) {
    break;
   }
  }
 }
}

当i为成员变量的时候,执行程序打印50个数,0~49,当i为局部变量的时候,打印100个数。

如果一个变量是成员变量。那么多个线程对同一个对象的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成员变量的改变会影响到另外一个线程)。如果一个变量为局部变量,那么每个线程都会有一个该局部变量的拷贝,一个线程对该局部变量的改变不会影响到其他的线程。

抱歉!评论已关闭.