如何实现Java两线程交替输出
流程图
sequenceDiagram
小白->>开发者: 请求教程
开发者->>小白: 教授"Java两线程交替输出"方法
步骤
步骤 | 描述 |
---|---|
1 | 创建两个线程对象,分别负责输出奇数和偶数 |
2 | 设置线程优先级,以便实现交替输出 |
3 | 使用synchronized关键字实现线程同步 |
4 | 使用wait()和notify()方法实现线程通信 |
代码示例
步骤一:创建两个线程对象
// 创建一个线程输出奇数
Thread oddThread = new Thread(() -> {
// 输出奇数逻辑
});
// 创建一个线程输出偶数
Thread evenThread = new Thread(() -> {
// 输出偶数逻辑
});
步骤二:设置线程优先级
// 设置奇数线程优先级为1
oddThread.setPriority(1);
// 设置偶数线程优先级为2
evenThread.setPriority(2);
步骤三:使用synchronized关键字实现线程同步
public class Main {
private static Object lock = new Object();
public static void main(String[] args) {
// 同步锁为静态变量lock
synchronized (lock) {
// 线程同步逻辑
}
}
}
步骤四:使用wait()和notify()方法实现线程通信
public class Main {
private static Object lock = new Object();
private static int count = 0;
public static void main(String[] args) {
new Thread(() -> {
synchronized (lock) {
while (count < 10) {
if (count % 2 == 0) {
System.out.println(count);
count++;
lock.notify(); // 唤醒等待的线程
} else {
try {
lock.wait(); // 让当前线程等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
new Thread(() -> {
synchronized (lock) {
while (count < 10) {
if (count % 2 != 0) {
System.out.println(count);
count++;
lock.notify(); // 唤醒等待的线程
} else {
try {
lock.wait(); // 让当前线程等待
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
}
}
通过以上步骤,两个线程就可以交替输出数字了。希望这篇文章对你有所帮助,如果有任何疑问,欢迎随时向我提问。加油!