私はクライアントからのデータを受信するサーバーを持っています。クライアントがデータを送信すると、スレッドに入ります。したがって、各スレッドにはデータがあります。 revFeaturePointsは、サーバーがクライアントから受け取るデータです。Java:異なるスレッドのオブジェクトを比較する方法
各revFeaturePointsには浮動小数点型配列があります。異なるスレッドで異なるrevFeaturePoint間のユークリッド距離を計算しますか?
他のスレッドの別のrevFeaturePointsにアクセスする方法を知りませんか?ここで
はコードです:
public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket serverSocket = null;
//bind a serverSocket to the port and listen
try{
serverSocket = new ServerSocket(8888);
System.out.println("Listening: 8888");
}catch(IOException e){
e.printStackTrace();
}
while(true)
new MyServerThread(serverSocket.accept()).start();
}
}
public class MyServerThread extends Thread{
//Create a socket for each client
private Socket socket = null;
private ObjectInputStream dataInputStream = null;
private ObjectOutputStream dataOutputStream = null;
private ArrayList<FeaturePointList> revFeaturePoints = null;
//constructor
public MyServerThread(Socket socket){
super("MyServerThread");
this.socket = socket;
}
@SuppressWarnings("unchecked")
public void run(){
try{
dataOutputStream = new ObjectOutputStream(socket.getOutputStream());
dataInputStream = new ObjectInputStream(socket.getInputStream());
System.out.println("ip: "+ socket.getInetAddress());
revFeaturePoints = (ArrayList<FeaturePointList>) dataInputStream.readObject();
}catch(IOException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if(socket!=null){
try{
socket.close();
}catch(IOException e){
e.printStackTrace();
}
}
if(dataInputStream!=null){
try{
dataInputStream.close();
}catch(IOException e){
e.printStackTrace();
}
}
if(dataOutputStream!=null){
try{
dataOutputStream.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
}
もっとコードを表示してください。あなたが提示したコードは、この質問にはまったく関係ありません。 'MyServerThread'の実装は何ですか?あなたは何かについて何か考えましたか? –
また、「他のスレッドのデータと1つのデータを比較する」という正確な意味は?あなたが達成しようとしていることを明確に述べておけば、もっと良い答えが得られるかもしれません... –
jcipのMemoizerを見たいかもしれません。 – Ron