0
我有3個類1.主2.主3.客戶(三個實例)。主服務器和客戶端有一個函數增量,它們保持遞增值,並且定期客戶端(比如每2秒)將該增量值發送給主服務器,並且隨機時間每個客戶端應該隨機發送消息給其他客戶端(比如client1發送給客戶端2)。當maser收到消息時,它會做一些計算並將價值廣播給所有消費者。線程之間如何通信
主要-------->
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();
}
}
大師----->
公共類碩士繼承Thread {
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);
}
}
客戶端 - >
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 2014-10-09 20:41:30
我只需要在一臺機器上模擬這個 – 2014-10-09 20:44:36
聲音太複雜了,對我來說這代表糟糕的設計。我可以看到客戶與主人溝通,但他們爲什麼要互相交談?理想情況下,您希望線程儘可能地獨立,並且可能只共享一些數據,而不是在它們之間來回發送消息。 – ventsyv 2014-10-09 20:46:26