java多线程题目练习
时间: 2023-10-30 22:07:00 浏览: 45
好的,针对您的问题,以下是一个简单的Java多线程题目练习:
请编写一个Java程序,创建两个线程,一个线程打印1~50的奇数,另一个线程打印1~50的偶数,要求线程交替执行,输出结果如下:
Thread-0: 1
Thread-1: 2
Thread-0: 3
Thread-1: 4
Thread-0: 5
Thread-1: 6
...
Thread-0: 49
Thread-1: 50
代码如下:
```
public class PrintOddEven {
private static int count = 1;
private static final Object lock = new Object();
public static void main(String[] args) {
Thread oddThread = new Thread(new OddRunnable());
Thread evenThread = new Thread(new EvenRunnable());
oddThread.start();
evenThread.start();
}
static class OddRunnable implements Runnable {
@Override
public void run() {
while (count <= 50) {
synchronized (lock) {
if (count % 2 == 1) {
System.out.println(Thread.currentThread().getName() + ": " + count);
count++;
lock.notify();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
static class EvenRunnable implements Runnable {
@Override
public void run() {
while (count <= 50) {
synchronized (lock) {
if (count % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ": " + count);
count++;
lock.notify();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
}
```