创建两个thread,交替打印出1到10的数字,输出为1,1,2,2...10,10这种形式,请帮我写出java的完整代码
时间: 2024-05-29 09:11:07 浏览: 19
以下是使用Java编写的交替打印1到10数字的代码:
public class AlternatePrintingNumbers {
private static Object lock = new Object(); // 用于同步的锁对象
private static boolean isOdd = true; // 用于标记当前应该由奇数线程打印
public static void main(String[] args) {
Thread oddThread = new Thread(new OddNumberPrinter());
Thread evenThread = new Thread(new EvenNumberPrinter());
oddThread.start();
evenThread.start();
}
// 奇数线程
private static class OddNumberPrinter implements Runnable {
@Override
public void run() {
for (int i = 1; i <= 10; i += 2) {
synchronized (lock) {
while (!isOdd) { // 不该由奇数线程打印时等待
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print(i + ", ");
isOdd = false; // 标记下一个应该由偶数线程打印
lock.notify(); // 唤醒等待的线程
}
}
}
}
// 偶数线程
private static class EvenNumberPrinter implements Runnable {
@Override
public void run() {
for (int i = 2; i <= 10; i += 2) {
synchronized (lock) {
while (isOdd) { // 不该由偶数线程打印时等待
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print(i + ", ");
isOdd = true; // 标记下一个应该由奇数线程打印
lock.notify(); // 唤醒等待的线程
}
}
}
}
}