Создание потоков для запуска алгоритмов игроков

Я пытаюсь написать программу, которая реализует решение проблемы заключенных и переключателей. Я создал класс 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.

Другие вопросы по тегам