Java 如何暂停其他正在进行的streamreader线程

Java 如何暂停其他正在进行的streamreader线程,java,swing,network-programming,thread-safety,swingworker,Java,Swing,Network Programming,Thread Safety,Swingworker,例如,如果我试图在服务器程序上构建一个文件传输机制,通过利用发送者a和用户B之间现有的连接套接字,将一个文件字节从发送者a发送到用户B,那么如何避免它与所有正在进行的聊天流交织,也就是说,除了在服务器端创建一个额外的serversocket之外,在这两个线程之间保持清除等待和通知 非常感谢 Kev为您的应用程序创建一个区别不同消息类型的消息协议。然后创建一条“文件块”消息和一条“聊天”消息以及您需要的任何其他消息 伪代码: // sending method public synchronize

例如,如果我试图在服务器程序上构建一个文件传输机制,通过利用发送者a和用户B之间现有的连接套接字,将一个文件字节从发送者a发送到用户B,那么如何避免它与所有正在进行的聊天流交织,也就是说,除了在服务器端创建一个额外的serversocket之外,在这两个线程之间保持清除等待和通知

非常感谢
Kev

为您的应用程序创建一个区别不同消息类型的消息协议。然后创建一条“文件块”消息和一条“聊天”消息以及您需要的任何其他消息

伪代码:

// sending method
public synchronized void send(Message msg) {
  // write message to socket ...
}

// receiving method
while(true) {
  Message msg = readMessage(); // read message from socket
  handleMessage(msg); // may want to push this work to another thread
}

为你的应用程序创建一个区别不同消息类型的消息协议。然后创建一条“文件块”消息和一条“聊天”消息以及您需要的任何其他消息

伪代码:

// sending method
public synchronized void send(Message msg) {
  // write message to socket ...
}

// receiving method
while(true) {
  Message msg = readMessage(); // read message from socket
  handleMessage(msg); // may want to push this work to another thread
}

通过多个
Socket
s连接。通过多个
Socket
s.r.u连接表示每个客户端一个Socket就足以解决此问题,如果是,则您的回答没有切掉我关于交叉传入的并发问题的问题stream@Saint-是的,我假设一个插座连接。通过实现消息传递协议,您可以在同一个套接字连接上对各种类型的通信进行多路复用。一个套接字只能生成一个inputstream,对消息进行不同的处理,因为它们的类型不会筛选stream flood inI我不确定您是否了解我的观点,您如何构建一些“文件块”消息类型要处理传入的流字节,可能需要一个文件或与一些即时聊天消息相结合,就像任何协议一样,在每种类型之前发送一个特殊的命令序列,或者如果愿意,发送一个头,表示每个客户机一个套接字就足够了,如果是,那个么你们的回答并没有切掉我关于交叉传入的并发问题的问题stream@Saint-是的,我假设一个插座连接。通过实现消息传递协议,您可以在同一个套接字连接上对各种类型的通信进行多路复用。一个套接字只能生成一个inputstream,对消息进行不同的处理,因为它们的类型不会筛选stream flood inI我不确定您是否了解我的观点,您如何构建一些“文件块”消息类型要处理传入的流字节,可能需要一个文件或与一些即时聊天消息相结合,就像任何协议一样,您可以在每种类型之前发送一个特殊的命令序列,或者如果愿意,发送一个head