Добрый день господа.
Читаю о потоках в Java и наткнулся на семафор.
import java.util.concurrent.Semaphore;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Semaphore sem = new Semaphore(2);
Scanner sc = new Scanner(System.in);
System.out.println("Введите количество клиентов");
int i = sc.nextInt();
while(i>=1)
{
new Client(sem,i).start();
i = i - 1;
}
}
}
// класс Клиента
class Client extends Thread
{
Semaphore sem; // семафор. ограничивающий число клиентов
// кол-во обслуживаний
int num = 0;
// условный номер клиента
int id;
// в качестве параметров конструктора передаем идентификатор клиента и семафор
Client(Semaphore sem, int id)
{
this.sem=sem;
this.id=id;
}
public void run()
{
try
{
while(num<1)// пока количество посещений не достиг.
{
//Запрашиваем у семафора разрешение на выполнение
sem.acquire();
System.out.println ("Клиент " + id+" совершает покупку");
// Клиент совершает покупку
sleep(500);
num++;
System.out.println ("Клиент " + id+" клиент вышел с магазина");
sem.release();
// Клиент гуляет
sleep(500);
}
}
catch(InterruptedException e)
{
System.out.println ("у клиента " + id + " баг");
}
}
}
Следовательно пришла идея реализовать инпут данных из Web. ( Переменная i ) - while(i>=1)
Возможно ли как-то это реализовать?
А на выходе хочу как-то реализовать название клиентов которые сейчас обслуживаются и количество свободных мест.