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类用于存储线程共享的计数器jCounter类中的increment()decrement()方法使用synchronized关键字来保证线程安全。这样只有一个线程可以访问increment()decrement()方法,其他线程需要等待。在每次调用increment()decrement()方法时,会打印当前计数器的值。

然后创建了两个IncrementThread线程和两个DecrementThread线程,它们分别对计数器进行增加和减少操作。每个线程运行时会循环调用counter.increment()counter.decrement()方法10次。

最后,通过调用start()方法启动线程。运行该程序,你将看到输出结果中计数器的值交替增加和减少

java中设计4个线程其中两个线程每次对j增加1另外两个线程对j每次减少1。考虑到线程的安全性写出程序。用实现Runnable接口来写

原文地址: https://www.cveoy.top/t/topic/hLY4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录