1.三个线程要共享计数变量,才能达到你的要求吧
  如果不是共享同一个计数变量,当然3个线程各自执行各自的计数class ThreadTest implements Runnable {
    Object obj = new Object();
    int i = 0;
    public void run() {
        while(true){
            synchronized (obj) {
                if(i >= 100)
                    return;
                try {
                    Thread.sleep(10);
                    System.out.println(Thread.currentThread().getName() + i);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                i += 2;
            }
        }
    }
}

解决方案 »

  1.   

    #1正解,或者你设的新线程是同一个线程类的实例也行。而且线程同步还有一种方法是用lock锁,具体写法如下:
    a.lock();
    要同步的代码;
    a.unlock();
    ps:以上的方法在c#中也有用到
      

  2.   


    class ThreadTest implements Runnable {
    Object obj = new Object();
        int count = 2 ;
    public void run() {
    for (int i = 2; i < 100; i += 2) {
    synchronized (obj) {
    try {
    Thread.sleep(10);
    System.out.println(Thread.currentThread().getName() + count);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    count += 2 ;
    }
    }
    }public class RunTest {
    public static void main(String[] args) { ThreadTest tt = new ThreadTest();
    Thread t1 = new Thread(tt, "线程A:");
    Thread t2 = new Thread(tt, "线程B:");
    //Thread t3 = new Thread(tt, "线程C:");
    t1.start();
    t2.start();
    //t3.start();
    }
    }
      

  3.   

    run函数里面的是每个线程独占的,不是共享的