一个生活在底层的小小码农 2020-06-02 16:43 采纳率: 100%
浏览 609
已采纳

Java做socket实时接收数据存入数据库不及时?

  • 应公司业务做了一个基于socket的实时接收数据的功能,就是我java后端写了一个服务端是基于UDP协议的,实时接收客服端发来的数据,对数据进行处理存入数据库。
  • 目前的客户端发来的数据比较快,一秒能有10个包发过来,每个包的数据也不大,挺小的,但就是我在处理这些数据的时候写的逻辑运算比较多,造成了目前存入数据库时不能达到所谓的实时更新的效果
  • 我说一下这个数据必须要在页面实时更新展示的
  • 补充一下:是开启多个客户端同时向服务端发送数据的,就比如目前有三个客户端对服务端同时发送数据(同一个端口),就会出现数据存入数据库不及时,但数据是已经接收到了(我在控制台打印看到了,只是没有及时存到数据库)
  • 如果只是一个客户端向数据库发送数据就可以达到理想化的实时存入数据库然后在页面实时展现数据,多个就不行了
  • 想问下各位大佬,是程序运行的太慢了,还是什么原因呢?我也做了开启多线程执行程序了啊
public String startDs() {
        DatagramSocket socket = null;
        try {
            socket = new DatagramSocket(8800);
        } catch (SocketException e) {
            e.printStackTrace();
        }
        //记录客户端的数量
        int count = 0;
        while (true) {
            data = new byte[16];// 创建字节数组,指定接收的数据包的大小
            packet = new DatagramPacket(data, data.length);
            try {
                socket.receive(packet);
            } catch (IOException e) {
                e.printStackTrace();
            } // 此方法在接收到数据报之前会一直阻塞
            Thread thread = new Thread(new UDPThread(socket, packet));
            thread.start();

        }
    }
  • 写回答

2条回答 默认 最新

  • bobo415 2020-06-02 17:04
    关注

    这种一般是你运算数据太耗时了,优化下你的逻辑跟算法(优先优化逻辑)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!