java - 多线程写入套接字输出流时丢失消息
问题描述
我试图在同一个 java 套接字输出流中写入至少 5 条消息,来自两个不同的线程,几乎是瞬间的。
但为了简化,假设我有两个线程写入同一个套接字输出流。当我以超过 1 秒的间隔编写它们时,我会在另一端收到两条消息,但如果我将它们发送到低于 1 秒的间隔,第一个似乎被覆盖(我猜),只有第二个得到另一个结尾。
我的写入是在同步块内执行的:
this.sock =new Socket(InetAddress.getByName(hstName), hstPort);
this.os = this.sock.getOutputStream();
synchronized(this.os) {
this.os.write(buffer, ofset, blen);
this.os.flush();
}
任何人都知道为什么我的第一条消息被删除,这是否应该,以及如何解决这个问题。请注意,我无法更改负责接收消息的代码。我拥有仅发送消息的代码。
提前致谢
解决方案
推荐阅读
- javascript - 是否可以从新的服务人员中检测到现有服务人员的存在?
- ios - Swift - CoreData - 如何获取孩子的父对象?
- r - 如何计算 R 中的预测 R Sq
- python - 计算子数组中的 dict 元素会产生意外的数字
- c# - DbSet 实际上是如何工作的?
- c++ - 具有堆内存分配的类,2 个实例共享一个指针(未分配被释放的指针)
- css - CSS 父母兄弟选择器
- powerbi - 使用直接查询,我想在 MS Power BI 的表格视觉对象中显示过去三天和今天同一时间的连续数据
- sql - H2数据库查询语法
- python - Python - Selenium webdriver 不从所有域(子域)返回 cookie