Member 13543978 Ответов: 0

Потокобезопасное чтение/запись в счетчик


Я пытаюсь сделать 2 потока, которые читают/записывают в счетчик, используя потокобезопасные методы.
Будет ли мне лучше использовать атомарное целое число для хранения значения счетчика, чтобы я мог безопасно увеличить его и получить значение?

Что я уже пробовал:

public class Counter {

    private int count;

    public Counter() {
        count = 0;
    }

    public synchronized void increment() {
        count++;
    }


    public synchronized int getVal() {
        return count;
    }
}


public class Increment extends Thread {

    private static final int MAX = 1000;
    private Counter myCounter;

    public Increment(Counter c) {
        myCounter = c;
    }

    public void run() {
        for (int i = 0; i < MAX; i++) {
            myCounter.increment();
        }
    }
}


public class Read extends Thread {

    private static final int MAX = 1000;
    private Counter myCounter;

    public Read(Counter c) {
        myCounter = c;
    }

    public void run() {
        for (int i = 0; i < MAX; i++) {
            System.out.println(myCounter.getVal());
        }
    }


public static void main(String[] args) {

    Counter c = new Counter();

    Thread inc = new Increment(c);
    Thread read = new Read(c);

    inc.start();
    read.start();

}

Richard MacCutchan

Это скорее зависит от того, каких именно результатов вы пытаетесь достичь.

0 Ответов