我有2个线程试图将数据发送到同一个端口。 每个线程都创建一个用于写入的新套接字 我想知道我的写作是否会被序列化?
由于 Anup
答案 0 :(得分:1)
我想知道我的写作是否会被序列化?
不,他们不是,你不希望他们成为。这将是对并发的任意限制,没有任何好处。
写入不同的套接字是完全独立的。它们不以任何方式序列化或顺序化。他们不需要。数据将传递到服务器端的不同套接字。
答案 1 :(得分:-1)
如果要同步写入,例如一个线程首先完成写入然后另一个线程开始,您必须通过同步来强制执行此行为。
一般来说代码会有一个共同的锁对象,所以这将保证线程将完成所有的写操作,然后另一个线程将启动。即书面没有重叠
static Object lock = new Object();
// For both threads
public void run(){
synchronize(lock){
// write to port
}
}
修改强>
这个问题可能需要更多澄清,我的回答是基于以下理解
// Thread 1
public void run(){
port1.println("A");
port1.println("B");
port1.println("C");
}
// Thread 2
public void run(){
port2.println("1");
port2.println("2");
port2.println("3");
}
port1
和port2
都连接到相同的服务器端口(来自ServerSide,它们每个都有不同的读取线程),并且您要保证服务器收到123
或abc
,但没有重叠。如果是这种情况,则需要同步。