Я пытаюсь создать простое приложение на основе Java Swing, которое вручную управляет двумя потоками, которые пытаются постоянно увеличивать целочисленное значение. Приложение должно иметь возможность "запускать" и "останавливать" любой из потоков (оба потока увеличивают значение одновременно) и помещать любой из потоков в критическую область ( только одному потоку разрешено увеличивать значение).
Вот скриншот того, что у меня есть, чтобы вы могли лучше понять, к чему я стремлюсь:
https://i.imgur.com/sQueUD7.png
Я создал класс "Incrementor", который увеличивает значение int, но если я попытаюсь добавить ключевое слово synchronized в метод increment(), я не получу желаемого результата.
private void increment() {
while (Thread.currentThread().isAlive()) {
if (Thread.currentThread().getName().equals("Thread 1")) {
if (t1Stop.isEnabled()) {
value++;
t1TextField.setText("Thread 1 has incremented value by 1. Current value = " + value + "\n");
}
} else if (Thread.currentThread().getName().equals("Thread 2")) {
if (t2Stop.isEnabled()) {
value++;
t2TextField.setText("Thread 2 has incremented value by 1. Current value = " + value + "\n");
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
Любые советы о том, как действовать?
Надеюсь, я ясно дал понять, что я ищу, если нет, дайте мне знать, и я обновлю этот пост.