我目前正忙于做一些功课,想知道是否有人可以提供帮助-
我必须在java中使用信号量来同步来自2个线程的打印字母——一个打印“A”,一个打印“B”。我不能连续打印超过 2 个相同的字符,所以输出应该看起来像
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
目前我有 3 个信号量,一个二进制互斥体设置为 1,和一个计数信号量,我的线程类看起来像这样 -
public void run() {
while (true) {
Time.delay(RandomGenerator.integer(0,20));
Semaphores.mutex.down ();
System.out.println (produce());
if (printCount > 1)
{ printCount = 0;
Semaphores.mutex.up ();
Semaphores.printB.up();
}
}
}
public String produce() {
printCount++;
return "A";
}
public void run() {
while (true) {
Time.delay(RandomGenerator.integer(0,20));
Semaphores.mutex.down ();
System.out.println (produce());
if (printCount > 1)
{ printCount = 0;
Semaphores.mutex.up ();
Semaphores.printA.up();
}
}
}
public String produce() {
printCount++;
return "B";
}
然而,无论我尝试什么,要么死锁,要么它似乎最多只能连续打印 2 个,但似乎总是不时地连续打印 3 个!
非常感谢任何帮助,如果可能的话,不要看代码或任何东西,只要几个指针:)