java设计四个线程对同一个变量做修改 两个线程做加法 两个线程做减法。
时间: 2024-02-18 20:03:18 浏览: 52
这个问题可以通过使用Java的多线程编程来实现。首先,需要定义一个可共享的整型变量,即多个线程都可以对其进行修改。然后,创建两个加法线程和两个减法线程,它们同时对该变量进行加法和减法操作,最后输出变量的值。
以下是一个可能的解决方案:
```java
public class Main {
public static void main(String[] args) {
Counter counter = new Counter(); // 实例化计数器对象
AddThread addThread1 = new AddThread(counter); // 实例化加法线程对象
AddThread addThread2 = new AddThread(counter);
SubThread subThread1 = new SubThread(counter); // 实例化减法线程对象
SubThread subThread2 = new SubThread(counter);
addThread1.start(); // 启动线程
addThread2.start();
subThread1.start();
subThread2.start();
try {
addThread1.join(); // 等待线程执行完毕
addThread2.join();
subThread1.join();
subThread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("变量的值为:" + counter.getCount()); // 输出变量的值
}
}
class Counter {
private int count = 0;
public synchronized void add() { // 加法操作
count++;
}
public synchronized void sub() { // 减法操作
count--;
}
public int getCount() { // 获取变量值
return count;
}
}
class AddThread extends Thread {
private Counter counter;
public AddThread(Counter counter) {
this.counter = counter;
}
public void run() {
for (int i = 0; i < 10000; i++) {
counter.add(); // 进行加法操作
}
}
}
class SubThread extends Thread {
private Counter counter;
public SubThread(Counter counter) {
this.counter = counter;
}
public void run() {
for (int i = 0; i < 10000; i++) {
counter.sub(); // 进行减法操作
}
}
}
```
在上述代码中,定义了一个`Counter`类,它包含一个可共享的整型变量`count`,并提供了加法和减法操作的方法。`AddThread`和`SubThread`类分别表示加法线程和减法线程,它们在运行时,通过调用`Counter`类的方法来修改变量的值。
需要注意的是,在`Counter`类的方法上加上`synchronized`关键字,可以保证多个线程访问该方法时的线程安全性。此外,使用`join()`方法可以等待线程执行完毕后再输出结果。
阅读全文