【发布时间】:2023-03-20 01:50:01
【问题描述】:
我正在尝试创建一个简单的基于 Java Swing 的应用程序,该应用程序手动控制两个线程,这两个线程都试图不断增加整数值。应用程序应该能够 'Start' 和 'Stop' 任一线程(两个线程同时递增值)并将任一线程置于临界区(只有一个线程允许增加值)。
这是我的截图,以便您更好地理解我的目标:
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();
}
}
}
关于如何进行的任何建议?
我希望我已经说清楚了我在寻找什么,如果没有,请告诉我,我会更新这篇文章。
【问题讨论】:
-
见
java.util.concurrent.Semaphore和朋友们。
标签: java multithreading swing