要求线程A输出一个奇数数,接着线程B输出一个偶数,如此交叉输出100以内的所有奇偶数。为什么输出的开始的时候会有2个0,要怎么改?

public class Demo01 implements Runnable {

static Object obj = new Object();

static int i = 0;

@Override

public void run() {

for (; i < 101; i++) {

synchronized (obj) {

obj.notify();

System.out.println(Thread.currentThread().getName()+":"+i);

try {

obj.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

public class Test {

public static void main(String[] args) {

Demo01 d = new Demo01();

Thread c = new Thread(d);

Thread c1 = new Thread(d);

c1.start();

c.start();

}

}

图片说明

更改后可以了

public class TestThread implements Runnable {

static Object obj = new Object();

int i;

public TestThread(int i) {

this.i = i;

}

@Override

public void run() {

for (int j = i; j < 101; j += 2) {

synchronized (obj) {

obj.notify();

System.out.println(" " + Thread.currentThread().getName() + " " + j);

try {

obj.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

public class Test {

public static void main(String[] args) {

TestThread tt0 = new TestThread(0);

TestThread tt1 = new TestThread(1);

Thread A = new Thread(tt0);

Thread B = new Thread(tt1);

A.start();

B.start();

}

}

回答

应该是你的循环,起始为0 , 给1到101

以上是 要求线程A输出一个奇数数,接着线程B输出一个偶数,如此交叉输出100以内的所有奇偶数。为什么输出的开始的时候会有2个0,要怎么改? 的全部内容, 来源链接: utcz.com/a/27497.html

回到顶部