【发布时间】:2017-05-07 22:59:53
【问题描述】:
我有以下课程:
public class Prices {
String priceValues;
public String getPriceValues() {
return priceValues;
}
public void setPriceValues(String priceValues) {
this.priceValues = priceValues;
}
}
这是我在SocketServer 类中的run 方法:
public void run() {
while(true) {
try {
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
prices.setPriceValues(in.readUTF());
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress()
+ "\nGoodbye!");
//server.close();
}catch(SocketTimeoutException s) {
System.out.println("Socket timed out!");
break;
}catch(IOException e) {
e.printStackTrace();
break;
}
}
}
一切运行良好,但我想存储从客户端接收到的内容,以便任何类都可以访问它。所以我创建了一个名为Prices 的类。
但是,线程卡在以下行:
prices.setPriceValues(in.readUTF());
prices 变量不为空,当我取出这条线时,一切运行良好。
【问题讨论】:
-
您不应该在每次循环时都重新创建
DataInputStream。在循环之前创建它。
标签: java multithreading sockets datainputstream