Создание потоков для запуска алгоритмов игроков
Я пытаюсь написать программу, которая реализует решение проблемы заключенных и переключателей. Я создал класс SwitchRoom..
public class SwitchRoom
{
private boolean switchA;
private boolean switchB;
и класс заключенных
public class Prisoner
{
public void visitSwitchRoom() {
// do something with switches
Теперь я думаю, как именно я могу это запустить. Будет ли лучше, если класс Prisoner реализует Runnable (превращает их экземпляры в потоки), а затем создает 23 потока в Java-программе?
Если это хороший подход, не могли бы вы предоставить пример кода, чтобы начать?
Если это не правильный путь, не могли бы вы дать мне несколько советов о том, что?
1 ответ
Ваш теоретический подход, кажется, в порядке.
Начните с реализации 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 из этих нитей. Если вы добавляете логическое значение в каждый объект, представляющий, является ли объект обычным заключенным или встречным лицом, не забудьте установить значение по умолчанию в false и установить для одного из них значение true, чтобы в конечном итоге вырваться из цикла while.