要求线程A输出一个奇数数,接着线程B输出一个偶数,如此交叉输出100以内的所有奇偶数。为什么输出的开始的时候会有2个0,要怎么改?
public class Demo01 implements Runnable {
static Object obj = new Object();static int i = 0;
@Overridepublic 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