kevinpan45 2012-03-19 14:11
浏览 260
已采纳

无法向ArrayList添加对象

我用一个单例的管理类管理很多个list,现在我的其他的模块调用这个管理类并向它的一个ArrayList里面添加一个对象,但是这个ArrayList一直为null,另外说明这个ArrayList是放在一个线程里面反复循环的,因为我要通过里面的对象用socket向各个地方发包。另求socket接收和分发包的示例(自己作为一个流的管理者,下面的分支都向自己拉流,管理者根据请求的地址和端口发包)
代码如下:
[code="java"]public class InviteStreamWorker extends Thread {
public static List inviters = new ArrayList();
public void addInviter(StreamInviter inviter) {
if (!checkExistInviter(inviter)) {
inviters.add(inviter);
}
}
@Override
public void run() {
HsSipUtil.info("method", "InviteStreamWorker.run()");
if (isStream) {
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
DatagramPacket packetToSend;
try {
socket.receive(packet);
packetToSend = new DatagramPacket(packet.getData(),
packet.getData().length);
if (inviters.size() > 0) {
for (StreamInviter inviter : inviters) {
HsSipUtil.info("address", inviter.getAddress());
HsSipUtil.info("port", inviter.getPort());
packetToSend.setAddress(InetAddress.getByName(inviter
.getAddress()));
packetToSend
.setPort(Integer.valueOf(inviter.getPort()));
socket.send(packetToSend);
}
} else {
System.out.println("no inviter in list now");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}[/code]

  • 写回答

5条回答 默认 最新

  • ll89308839 2012-03-20 10:56
    关注

    socket.send(packetToSend);
    只有这里发送成功了,下个发送才会开始,也算是阻塞式发送这里我觉得可以
    new Runnable(){}.start();
    推荐一篇帖子你看看
    http://www.iteye.com/topic/834447
    使用nio来处理

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

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置