用Java实现以下实验:设置4个线程对象,其中两个实现自增操作,两个实现自减操作。数值范围:0<= num <=2000
时间: 2024-10-24 15:16:25 浏览: 11
在Java中,你可以通过`Thread`类、`Runnable`接口和匿名内部类来创建并启动多个线程,同时利用多态让它们分别执行自增和自减的操作。以下是一个简单的示例:
```java
import java.util.concurrent.atomic.AtomicInteger;
class Increment implements Runnable {
private AtomicInteger number;
public Increment(int initialValue) {
this.number = new AtomicInteger(initialValue);
}
@Override
public void run() {
for (int i = 0; i < 2000; i++) {
number.incrementAndGet();
}
System.out.println("自增线程结束,当前值:" + number.get());
}
}
class Decrement implements Runnable {
private AtomicInteger number;
public Decrement(int initialValue) {
this.number = new AtomicInteger(initialValue);
}
@Override
public void run() {
for (int i = 0; i < 2000; i++) {
number.decrementAndGet();
}
System.out.println("自减线程结束,当前值:" + number.get());
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
// 创建两个自增线程和两个自减线程
Thread increment1 = new Thread(new Increment(0));
Thread increment2 = new Thread(new Increment(1000));
Thread decrement1 = new Thread(new Decrement(1000));
Thread decrement2 = new Thread(new Decrement(0));
// 启动所有线程
increment1.start();
increment2.start();
decrement1.start();
decrement2.start();
// 等待所有线程完成
increment1.join();
increment2.join();
decrement1.join();
decrement2.join();
}
}
```
在这个例子中,我们使用了`AtomicInteger`类,它提供了原子性的自增和自减操作,避免了竞态条件。每个线程都会独立地增加或减少给定的数字,直到达到指定次数。
阅读全文