Создание потоков 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) {
}
}