作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试编写一个程序来实现 Prisoners and switches problem 的解决方案.我创建了一个 SwitchRoom 类..
public class SwitchRoom
{
private boolean switchA;
private boolean switchB;
和一个囚徒类
public class Prisoner
{
public void visitSwitchRoom() {
// do something with switches
现在我在想我该如何运行它。最好让 Prisoner 类实现 Runnable(将它们的实例变成线程),然后在 Java 程序中生成 23 个线程吗?
如果这是一个好方法,您能提供一个代码示例让我开始吗?
如果这不是正确的方法,您能给我一些建议吗?
最佳答案
您的理论化方法似乎没问题。
从实现runnable开始,在run()
方法中做:
public void run() {
while (true) {
if (/*counterperson has 23 counts*/) { break; }
synchronized (/*your switchroom object here*/) { // this makes it so only one person can flip switches at a time
// use an if/else to figure out if this person is the "counter" person
// try to flip a switch/do stuff based on required logic regarding if he is
// the counter person
}
try {
wait(100); // or however long you want to wait before trying again
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
并制作 23 个这样的线程。如果你在每个对象中放置一个 boolean 值来表示该对象是普通囚犯还是柜台人员,请记住将默认值设置为 false,并将其中之一设置为 true,以便最终跳出 while 循环。
关于java - 创建线程来运行算法播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903570/
我是一名优秀的程序员,十分优秀!