У меня есть 3 класса 1. основная 2. Мастер 3. Клиенты (три экземпляра). Мастер и клиент имеют прирост функции, где они продолжают увеличивать значение, а периодически клиенты (скажем, каждые 2 сек.) Отправляют это значение приращения на мастер и в произвольное время каждый клиент должен отправлять сообщение другому клиенту, который он выбирает случайным образом (например, клиент1 отправляет клиенту 2). и когда мазер получает сообщение, он будет выполнять некоторые вычисления и транслировать значение на все cilent.Как общаться между потоками
Главная -------->
public class Sample_one{
public static final int PORT = 4444;
public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(PORT);
Socket socket =server.accept();
Thread m1= new Master(socket);
m1.start();
Client c1 = new Client();
Client c2 = new Client();
Client c3 = new Client();
c1.start();
c2.start();
c3.start();
}
}
Мастер ----->
общественного класса Master расширяет тему {
private int inc= 0;
long start = System.currentTimeMillis();
long end = start + 10*1000;
Socket socket;
Master(Socket socket){
this.socket = socket;
}
@Override
public void run() {
while(System.currentTimeMillis() < end){
increment();
//Method to read input from the client
}
}
private void increment(){
inc++;
System.out.println("counter"+ inc);
}
}
Client ->
public class Client extends Thread {
private int inc= 0;
long start = System.currentTimeMillis();
long end = start + 10*1000;
public void run() {
while(System.currentTimeMillis() < end){
increment();
//Method to send the value to the Master or other clients
}
}
private void increment(){
inc++;
System.out.println("counter"+ inc);
}
}
Я иду в текущий путь ??? Как подключить мастер и клиент и клиент к другим клиентам? Независимо от того, является ли Socket единственным способом? Я новые темы.
Связь между потоками выполняется/обсуждается, когда потоки находятся в одном процессе. Розетки предназначены для межмашинной связи (обычно). В какой классификации вы находитесь? Вы смешиваете их вместе. – SingleStepper
Мне нужно смоделировать это только на одной машине –
Звучит слишком сложно, что для меня означает плохой дизайн. Я вижу, как клиенты общаются с мастером, но почему они должны разговаривать друг с другом? В идеале вы хотите, чтобы потоки были как можно более независимыми, и, возможно, только разделяли некоторые данные, а не отправляли сообщения туда и обратно. – ventsyv