创建两个java协程并交替打印奇数和偶数
时间: 2024-04-27 17:20:22 浏览: 135
可以使用Java的SynchronousQueue或者TransferQueue来创建两个协程并交替打印奇数和偶数。
通过使用SynchronousQueue来实现,我们可以创建两个线程t1和t2,其中t1打印偶数,t2打印奇数。代码如下所示:
```java
import java.util.concurrent.SynchronousQueue;
public class SynchronousExample {
public static void main(String[] args) {
int[] odd = {1,
相关问题
创建两个线程实现奇数和偶数的交替输出Java代码
创建两个线程在Java中交替输出奇数和偶数可以使用`Thread`类、`Runnable`接口或者`Callable`接口配合`FutureTask`。这里我将展示如何使用`Runnable`接口的示例:
```java
import java.util.concurrent.*;
public class OddEvenThread {
private int number = 0;
private final Object lock = new Object(); // 用于同步两个线程
public class OddThread implements Runnable {
@Override
public void run() {
while (true) {
synchronized (lock) {
if (number % 2 == 0) { // 如果是偶数,其他线程会先持有锁,跳过打印
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else { // 打印奇数并唤醒等待的偶数线程
System.out.println(Thread.currentThread().getName() + ": " + number++);
lock.notifyOne(); // 唤醒等待的线程
}
}
}
}
}
public class EvenThread extends OddThread implements Runnable {
@Override
public void run() {
while (true) {
synchronized (lock) {
if (number % 2 != 0) { // 如果是奇数,打印并唤醒等待的奇数线程
System.out.println(Thread.currentThread().getName() + ": " + number++);
lock.notifyOne(); // 唤醒等待的线程
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(new OddEvenThread().new OddThread());
executor.execute(new OddEvenThread().new EvenThread());
executor.shutdown();
}
}
Java 创建两个线程,其中一个线程输出奇数,另一个线程输出偶数
在Java中,我们可以使用Thread类或者Runnable接口以及Callable和Future接口来创建并控制线程。为了创建一个打印奇数和偶数的场景,我们可以将这两个任务封装到不同的Runnable实例中,然后分别创建两个线程执行它们。以下是一个简单的示例:
```java
public class OddEvenThread implements Runnable {
private int number;
private boolean isOdd;
public OddEvenThread(int number, boolean isOdd) {
this.number = number;
this.isOdd = isOdd;
}
@Override
public void run() {
while (true) {
if (isOdd) {
System.out.printf("奇数 %d%n", number++);
} else {
System.out.printf("偶数 %d%n", number++);
}
// 您可以根据需要调整循环条件或睡眠时间
try {
Thread.sleep(100); // 线程暂停100毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
// 创建两个线程,一个是打印奇数,一个是打印偶数
Thread oddThread = new Thread(new OddEvenThread(1, true));
Thread evenThread = new Thread(new OddEvenThread(2, false));
// 启动线程
oddThread.start();
evenThread.start();
// 如果你想让主线程等待,可以添加join()
// oddThread.join();
// evenThread.join();
}
}
```
当运行这个程序时,你会看到一个打印奇数的线程和一个打印偶数的线程交替进行。每个线程内部的while循环会不断递增数字,并打印出相应的奇数或偶数。
阅读全文