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

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
    bobo415 2020-06-02 17:04
    已采纳

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

    点赞 评论
  • weixin_39267497
    小小小小小小小阳 2020-06-02 17:18

    对,这个还得从运算逻辑这个点来修改,这里太耗时。

    点赞 评论

相关推荐