本帖最后由 莫道荣 于 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类)的实例属性.
- 所以,很是不解,求解释了......高手.
复制代码 |