当前位置: 首页 > 知识库问答 >
问题:

线程卡在readUTF()中

通学真
2023-03-14

我有下面的课:

public class Prices {

    String priceValues;

    public String getPriceValues() {
        return priceValues;
    }

    public void setPriceValues(String priceValues) {
        this.priceValues = priceValues;
    } 
}
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.setPriceValues(in.readUTF());

共有1个答案

鲍健柏
2023-03-14
System.out.println(in.readUTF());
prices.setPriceValues(in.readUTF());

您在.readutf()中调用了两次。很可能不是你想要的。删除第一行,或将结果存储在变量中:

String s = in.readUTF();
System.out.println(s);
prices.setPriceValues(s);

请注意,在没有任何同步的情况下从多个线程设置和获取字段不是线程安全的。

 类似资料:
  • 我正在实现客户机/服务器文件发送和接收。 正在发送的部分C代码: 部分Java代码接收: 使用readUTF()函数后,服务器挂起或处于无限循环中,不再继续。我已经使用readLine()尝试了BufferedReader。有一个错误是“没有为BufferedReader(InputStream)找到合适的构造函数&readLine()给出警告。除了BufferedReader之外,还有其他替代方

  • 我编写了一个监听客户机的简单服务器,当客户机连接时,它打开一个Datainputstream,读取从客户机发送的所有数据(我的客户机wirte UTF数据)。

  • 我正在使用java,从服务器收到了一些json字符串。我收到了带有readUTF的json字符串,但是有一些数据丢失了。我没有收到每个json包的前两个字符。另一个问题是收到json字符串有延迟。例如,服务器发送了一个json字符串,客户端无法收到它,直到服务器和客户端发送的大约50个json字符串突然显示所有的json字符串。主要问题是什么? 因为服务器用UTF格式发送数据,所以我不能用Buff

  • 我有一个Java应用程序,它运行一系列并行线程,从AmazonS3下载对象块。我注意到,在没有任何问题的情况下运行了几个小时后,最终得到一个特定的块将挂起并导致程序冻结。 Java进程仍在运行,但CPU占用和网络IO很少。执行线程转储时,有一个线程永远不会离开IN_NATIVE状态,在SSL握手过程中,ocketRead0()似乎永远不会返回。下面是转述的堆栈跟踪: 下面是如何执行的代码片段: 作

  • 本文向大家介绍Java RandomAccessFile readUTF()方法及示例,包括了Java RandomAccessFile readUTF()方法及示例的使用技巧和注意事项,需要的朋友参考一下 RandomAccessFile类方法 readUTF()方法在java.io包中可用。 readUTF()方法用于以字符串形式读取此RandomAccessFile。 readUTF()方法

  • 安装应用程序时间线服务器时出错。请找出以下错误。 标准: 回溯(最近一次呼叫最后一次): 文件“/var/lib/ambari agent/cache/common services/warn/2.1.0.2.0/package/scripts/application\u timeline\u server.py”,第89行,在 执行 文件“/usr/lib/ambari agent/lib/re