设计4个线程,其中两个线程每次对 j 增加1,另外两个线程对 j 每次减少1
时间: 2023-05-20 15:02:11 浏览: 178
设计4个线程,其中两个对j增加,两个对j减少
以下是一个可能的解决方案:
```java
public class ThreadExample {
private int j = 0;
public static void main(String[] args) {
ThreadExample example = new ThreadExample();
example.startThreads();
}
private void startThreads() {
Thread t1 = new Thread(new IncrementThread());
Thread t2 = new Thread(new IncrementThread());
Thread t3 = new Thread(new DecrementThread());
Thread t4 = new Thread(new DecrementThread());
t1.start();
t2.start();
t3.start();
t4.start();
try {
t1.join();
t2.join();
t3.join();
t4.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Final value of j: " + j);
}
private class IncrementThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100000; i++) {
synchronized (ThreadExample.this) {
j++;
}
}
}
}
private class DecrementThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 100000; i++) {
synchronized (ThreadExample.this) {
j--;
}
}
}
}
}
```
这个程序创建了4个线程,其中两个线程每次对 j 增加1,另外两个线程对 j 每次减少1。为了避免多个线程同时修改 j 的值导致数据不一致,我们使用了 synchronized 关键字来保证同一时刻只有一个线程能够修改 j 的值。最后,我们等待所有线程执行完毕,然后输出最终的 j 的值。
阅读全文