有个项目要实时读取PLC的每个I点的状态,我现在的做法是周期查询所有点的总数按照点所在IP来排序,for循环50个点,50个点的读取,如果都为一个IP那么将50个点信息组成一个list传给一个线程建立一个socket去for循环读取每个点的状态,如果为多个IP就建立多个线程去读。这样一个点从建立socket连接到读到状态要700ms左右,如果连续读,第二个点用250ms左右就可以。这个模式目前用1000个点测试,50个点一循环要用13秒多,如果改为15个点是8秒多,但是还是不能满足需求。之前想每个点都建立socket,但是同一个IP同时建立socket70多个点时PLC就报错了。我接触JAVA开发没多久,所以设计的肯定有问题,希望大家帮忙想想怎么设计能大幅度缩短时间。