Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 4 pessoas caminham, cada uma em um corredor. Os 4 corredores saem em uma porta. Apenas 1 pode cruzar a porta por vez. Considere que cada corredor tem 200 m e cada pessoa anda de 4 a 6 m/s. Cada pessoa leva de 1 a 2 segundos p/ abrir a porta e cruzá-la. Faça uma aplicação java que simule essa situação.
- //Classe ThreadPessoa.java:
- package controller;
- import java.util.concurrent.Semaphore;
- public class ThreadPessoa extends Thread {
- private int idThread;
- private Semaphore semaforo;
- private static final int DISTANCIA = 200;
- public ThreadPessoa (int idThread, Semaphore semaforo) {
- this.idThread = idThread;
- this.semaforo = semaforo;
- }
- private void pessoaAndando() {
- int distanciaPercorrida = 0;
- while (distanciaPercorrida < DISTANCIA) {
- int rodada = (int) ((Math.random() * 6) + 4);
- distanciaPercorrida += rodada;
- System.out.println("A pessoa #"+idThread+" já percorreu "+distanciaPercorrida+" metros");
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- private void pessoaChegou() {
- System.out.println("A pessoa #"+idThread+" chegou");
- }
- private void pessoaPassa() {
- System.out.println("A pessoa #"+idThread+" está atravessando o portal (a.k.a porta)");
- int tempo = (int) ((Math.random() * 2000) + 1000);
- try {
- Thread.sleep(tempo);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- private void pessoaPassou() {
- System.out.println("A pessoa #"+idThread+" passou pelo portal (a.k.a porta)");
- }
- public void run() {
- pessoaAndando();
- pessoaChegou();
- try {
- semaforo.acquire();
- pessoaPassa();
- pessoaPassou();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } finally {
- semaforo.release();
- }
- }
- }
- //Classe MainPessoa.java
- package view;
- import java.util.concurrent.Semaphore;
- import controller.ThreadPessoa;
- public class MainPessoa {
- public static void main(String[] args) {
- int permissoes = 1;
- Semaphore semaforo = new Semaphore(permissoes);
- for (int i = 0; i < 4; i++) {
- Thread t = new ThreadPessoa(i, semaforo);
- t.start();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement