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 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题