Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import java.util.Scanner;
- import java.util.concurrent.Semaphore;
- class Car extends Thread {
- Parking parking;
- int name;
- Car(Parking parking, int name) {
- this.parking = parking;
- this.name = name;}
- void enterParking() {
- parking.enter(this.name);}
- void exitParking() {
- parking.exit(this.name);}
- @Override
- public void run() {
- for (int i = 0; i < 10; ++i) {
- this.enterParking();
- try {
- Thread.sleep(1000 + (int)(Math.random() * 1000));
- } catch (InterruptedException ex) {
- Logger.getLogger(Car.class.getName()).log(Level.SEVERE, null, ex);}
- this.exitParking();
- try {
- Thread.sleep(1000 + (int)(Math.random() * 1000));
- } catch (InterruptedException ex) {
- Logger.getLogger(Car.class.getName()).log(Level.SEVERE, null, ex);}} }}
- class Parking extends Thread {
- Semaphore semaphore;
- Parking(int place) {
- this.semaphore = new Semaphore(place);
- }
- void enter(int name) {
- try {
- semaphore.acquire();
- System.out.println("Car wjechal " + name);
- } catch (InterruptedException e) {}}
- void exit(int name) {
- System.out.println("Car wyjechal " + name);
- semaphore.release(); }
- @Override
- public void run() {
- while (true) {
- System.out.println("Liczba miejsc: " + semaphore.availablePermits());
- try {
- Thread.sleep(500);
- } catch (InterruptedException ex) {
- Logger.getLogger(Parking.class.getName()).log(Level.SEVERE, null, ex);}}}}
- public class JavaWspolbiezne {
- public static void main(String[] args) throws InterruptedException {
- Parking parking = new Parking(5);
- parking.setDaemon(true);
- parking.start();
- Thread[] threads = new Thread[10];
- int cars = 10;
- for (int i = 0; i < cars; ++i) {
- threads[i] = new Thread(new Car(parking, i));
- threads[i].start();}}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement