| 本帖最后由 莫道荣 于 2013-3-18 20:54 编辑 
 复制代码
package org.credo.thread;
public class FirstRunnable implements Runnable{
private int i;
public void run(){
     for(;i<10;i++){
            //当线程类实现Runnable接口时,
            //如果想获取当前线程,只能用Thread.currentThread()方法.
            System.out.println(Thread.currentThread().getName()+" "+i);
        }
    }
    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName()+" "+i);
            if(i==2){
                FirstRunnable fr=new FirstRunnable();
                //通过new Thread(target,name)方法创建新线程
                new Thread(fr,"newThread11").start();
                new Thread(fr, "newThread22").start();
            }
        }
    }
}
输出:
main 0
main 1
main 2
main 3
main 4
newThread11 0
newThread22 0
newThread22 2
main 5
main 6
main 7
main 8
main 9
newThread22 3
newThread22 4
newThread11 1
newThread11 6
newThread22 5
newThread11 7
newThread22 8
newThread11 9
输出让我有点额...不太理解,就那两个0....按理说应该是1,2线程都是0~9顺序的.
按理来说,i应该是连续的,也就是采用runnable接口的方式创建的多个线程可以共享线程类的实例属性.这是因为在这种方式下,程序所创建的Runnable对象只是线程的target,而多个线程可以共享同一个target,所以多个线程可以共享同一个线程类(实际上应该是线程的target类)的实例属性.
所以,很是不解,求解释了......高手.
 |