Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Hotel
- -----------
- package hotel;
- import java.util.Random;
- public class Ulaz extends Thread {
- private Hotel h;
- private volatile boolean kraj = false;
- public Ulaz(Hotel h) {
- this.h = h;
- }
- public void smestiUHotel() {
- Random r = new Random();
- int vb = r.nextInt(8) + 1;
- Musterija m = new Musterija(vb);
- h.smesti(m);
- }
- public void run() {
- Random r = new Random();
- try {
- while (!kraj) {
- int interval = r.nextInt(1000) + 500;
- smestiUHotel();
- Thread.sleep(interval);
- }
- System.err.println("Simulacija hotela je završena. Nit Ulaz je ugašena!");
- }catch (InterruptedException e) { System.err.println("Nit Ulaz je pukla"); }
- }
- public void shutdown() {
- kraj = true;
- }
- }
- -------------------
- Musterija
- ---------------------
- package hotel;
- public class Musterija {
- private int vremeBoravka;
- private static int uniqueid = 0;
- private int id;
- public Musterija(int vremeBoravka) {
- this.vremeBoravka = vremeBoravka;
- id = ++uniqueid;
- }
- public int getVremeBoravka() { return vremeBoravka; }
- public void smanjiDan() { vremeBoravka--; }
- public String toString() { return "[Musterija " + id + " / b:" + vremeBoravka + "]"; }
- }
- -----------------
- Hotel
- ------------------
- package hotel;
- public class Hotel extends Thread {
- private Musterija[] sobe;
- private int stanje = 0;
- private volatile boolean kraj = false;
- public Hotel(int kapacitet) {
- sobe = new Musterija[kapacitet];
- }
- public synchronized void smesti(Musterija m) {
- for(int i = 0; i < sobe.length; i++) {
- if(sobe[i] == null) {
- sobe[i] = m;
- stanje++;
- System.out.println(m + "je smešten u sobu " + i + ". Kapacitet: " + stanje + "/" + sobe.length );
- return;
- }
- }
- System.err.println("Kapacitet hotela je popunjen");
- notifyAll();
- }
- public synchronized void izbaci() {
- for(int i = 0; i < sobe.length; i++) {
- if(sobe[i] != null && sobe[i].getVremeBoravka() == 0) {
- stanje--;
- System.out.println(sobe[i] + " je napustio hotel. Stanje je: " + stanje + "/" + sobe.length);
- sobe[i] = null;
- } else if(sobe[i] != null) {
- sobe[i].smanjiDan();
- System.out.println("Prošao je dan za mušteriju." + sobe[i]);
- }
- }
- notifyAll();
- }
- public void run() {
- try {
- while (!kraj) {
- izbaci();
- Thread.sleep(1000);
- }
- System.err.println("Simulacija hotela je završena. Nit hotel je ugašena!");
- }catch (InterruptedException e) {
- System.err.println("Nit hotela je pukla!");
- }
- }
- public void shutdown() {
- kraj = true;
- }
- }
- ------------------------
- Main
- ------------------------
- package program;
- import hotel.*;
- import java.util.Scanner;
- public class Program {
- public static void main(String[] args) {
- System.out.println("Pritisnite taster ENTER za kraj programa! Program počinje za 5 sekundi");
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- Hotel h = new Hotel(5);
- h.start();
- Ulaz u = new Ulaz(h);
- u.start();
- Scanner s = new Scanner(System.in);
- s.nextLine();
- h.shutdown();
- u.shutdown();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment