Потокобезопасное чтение/запись в счетчик
Я пытаюсь сделать 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
Это скорее зависит от того, каких именно результатов вы пытаетесь достичь.