Создание потоков java

Всем привет. У меня стоит задача написать поток для библиотеки. Суть в том, что есть книги, есть люди и есть сама библиотека. Библиотека работает всегда. Но каждые 15 секунд делает перерыв на 5 секунд. Если человек пришел в библиотеку в не рабочее время, выводится надпись библиотека не работает и он уходит (без очереди). Если же со временем все ок, то выводится сообщение что он взял такую то книгу. Вот то, что я сделал, но мне кажется тут все совсем плохо.

public class LibThread extends Thread {
@Override
public  void run() {
    for (int i = 0; i <150; i++) {
        if (i %15==0) {
            try {
                System.out.println("Библиотека не работает");
                sleep(5000);
            } catch (InterruptedException e) {
            }
        }
    }
}

}

Если надо, могу скинуть остальной код. Помогите разобраться, что делаю не так и в какую сторону мне копать.


Ответы (1 шт):

Автор решения: Alexander Pavlov
public class LibThread extends Thread {
  private volatile boolean isOpen = false;

  @Override
  public  void run() {
            try {
                while (true) {
                  if (isOpen) sleep(15000);
                  else sleep(5000);
                  isOpen = !isOpen;
            } catch (InterruptedException e) {
            }
  }

  public void visit(String visitor) {
    if (isOpen) System.out.println(visitor + " взял книгу");
    else System.out.println("Библиотека закрыта");
  } 
}

...

LibThread lib = new LibThread();
lib.start();

Random random = new Random();
for (int visitor=1; visitor <= 100; visitor++) {
  try {
    sleep((random.nextInt(5)+1)*1000);
    lib.visit("Посетитель"+visitor);
  } catch (InterruptedException e) {
  }   
}
→ Ссылка