Я пытаюсь создать простое приложение на основе Java Swing, которое вручную управляет двумя потоками, которые пытаются непрерывно увеличивать целочисленное значение. Приложение должно иметь возможность 'Start' и 'Stop' любого из потоков (оба потока увеличивают значение одновременно) и помещать любой из потоков в критическую область (только один поток может увеличивать значение).
Вот скриншот того, что у меня есть, чтобы вы могли лучше понять, к чему я стремлюсь:
https://i.imgur.com/sQueUD7.png
Я создал класс «Incrementor», который выполняет работу по увеличению значения int, но если я пытаюсь добавить синхронизированное ключевое слово в метод 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();
}
}
}
Любой совет, как поступить?
Надеюсь, я дал понять, что именно я ищу, если нет, дайте мне знать, и я обновлю этот пост.