0
我有多個線程發送相同的數據包,並希望所有這些完成,然後再繼續發送下一個數據包。Java CyclicBarrier
我測試出的CyclicBarrier用下面的代碼:Test Code (was too long/messy to embed) 這個工作如預期打印的0的組合 - 4然後在一個循環
對於分組發送完成的,該代碼是等效除了for循環是:
for(RSocket sendSocket : sendSocketList){
new Thread(new Send(sendSocket , toServer)).start();
}
barrier.await();
併發送是:
private class Send implements Runnable{
private RSocket sendSocket;
private MPacket packet;
public Send(RSocket sendSocket, MPacket packet){
this.sendSocket = sendSocket;
this.packet = packet;
}
public void run(){
sendSocket.send(packet);
try {
barrier.await();
} catch (InterruptedException | BrokenBarrierException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
RSocket.send(分組);的功能與普通套接字的writeObject()函數的功能相同,除非它阻塞直到完成(當它收到ACK時)。假設網絡方面是正確的,我是否正確使用CyclicBarrier?
P.S.我要指出,如果我用一個for循環,但不啓動它按預期工作即:
for(RSocket sendSocket : sendSocketList){
sendSocket.send(toServer);
}
如果代碼過長/雜亂地張貼,然後將其縮減爲一個完整的可編譯的,可運行的樣本,證明問題。 –
@JimGarrison對不起,我不能發佈完整的代碼,因爲它涉及許多其他類,也是一個項目。我鏈接的樣本基本上是特定班級試圖做的和可編譯的。 – user3669539
你實際上沒有問過問題或說過問題。你看到了什麼問題? _是否有問題?如果沒有,那麼這是脫離主題,屬於[codereview.se]。 –