java中设计4个线程其中两个线程每次对j增加1另外两个线程对j每次减少1。考虑到线程的安全性写出程序。用实现Runnable接口来写
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
Thread incrementThread1 = new Thread(new IncrementThread(counter));
Thread incrementThread2 = new Thread(new IncrementThread(counter));
Thread decrementThread1 = new Thread(new DecrementThread(counter));
Thread decrementThread2 = new Thread(new DecrementThread(counter));
incrementThread1.start();
incrementThread2.start();
decrementThread1.start();
decrementThread2.start();
}
}
class Counter {
private int j = 0;
public synchronized void increment() {
j++;
System.out.println("Increment: " + j);
}
public synchronized void decrement() {
j--;
System.out.println("Decrement: " + j);
}
}
class IncrementThread implements Runnable {
private Counter counter;
public IncrementThread(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
counter.increment();
}
}
}
class DecrementThread implements Runnable {
private Counter counter;
public DecrementThread(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
counter.decrement();
}
}
}
在上面的示例中,首先创建了一个Counter类用于存储线程共享的计数器j。Counter类中的increment()和decrement()方法使用synchronized关键字来保证线程安全。这样只有一个线程可以访问increment()或decrement()方法,其他线程需要等待。在每次调用increment()或decrement()方法时,会打印当前计数器的值。
然后创建了两个IncrementThread线程和两个DecrementThread线程,它们分别对计数器进行增加和减少操作。每个线程运行时会循环调用counter.increment()或counter.decrement()方法10次。
最后,通过调用start()方法启动线程。运行该程序,你将看到输出结果中计数器的值交替增加和减少
原文地址: https://www.cveoy.top/t/topic/hLY4 著作权归作者所有。请勿转载和采集!