问候, 我正在开发一个依赖于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();
}
}