P2P网络和序列化

时间:2018-09-06 22:23:33

标签: java serialization p2p

问候, 我正在开发一个依赖于p2p本地网络的程序,我通过在IDE上按run键来创建新的对等方,我希望所有线程之间共享一个数组列表,以便可以对其进行修改。

我所面临的问题是,如果第一个线程写在序列化文件上,则新创建的线程可以读取列表上的此修改,但是如果最后一个线程修改了列表,则第一个线程将看不到该修改,因为它们进行了反序列化在运行按钮上按一次该文件。

对此有任何解决方案吗?(Java)

代码:

---
title: "Untitled"
runtime: shiny
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
---

```{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
```

Column {data-width=650}
-----------------------------------------------------------------------

### Chart A

```{r}
plotOutput("plot1", click = "wt")
output$plot1 <- renderPlot({
  plot(mtcars$mpg ~ mtcars$wt)
  })
```

Column {data-width=350}
-----------------------------------------------------------------------

### Chart B

```{r}
renderText({
  unlist(input$wt$x)
})
```

序列化:

Peer  peer = Peer.getInstance(portName, portNumber, "localhost", peers);

    new Thread(peer::startHost).start();

    peers.put(peer.getPort(), peer);

    waitASecond();
    serializePeers();
    return peer;

反序列化:

private static void serializePeers() {
        try {
          FileOutputStream fos = new 
          FileOutputStream("peersList.ser");
          ObjectOutputStream oos = new ObjectOutputStream(fos);
          oos.writeObject(peers);
          oos.close();

        fos.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

0 个答案:

没有答案