使用java将数据写入同一端口

时间:2013-02-07 03:25:33

标签: java multithreading sockets

我有2个线程试图将数据发送到同一个端口。 每个线程都创建一个用于写入的新套接字 我想知道我的写作是否会被序列化?

由于 Anup

2 个答案:

答案 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");
 }

port1port2都连接到相同的服务器端口(来自ServerSide,它们每个都有不同的读取线程),并且您要保证服务器收到123abc,但没有重叠。如果是这种情况,则需要同步。