【发布时间】:2020-10-07 16:16:21
【问题描述】:
我正在编写一个服务器-客户端程序,这是我的代码的简化版:
public static void main (String[] args){
function1();
System.out.println(object1.getField1());
}
客户端类:
class client {
public function1(){
//connecting to server and writing the field value to dataOutoutStream
}
服务器类:
class Server{
//accepting client and reading the value from dataInputStream
new Thread(new Runnable() {
public void run() {
object1.setField1(//something);
}
}
}).start();
}
在function1的某个地方,我连接了服务器,它运行一个线程来改变object1的field1。
但问题是在字段实际更改之前,它会打印以前的值。 我怎样才能使function1阻塞,这样我就可以防止这个问题?
【问题讨论】:
-
您需要与该线程进行某种协调。如果不了解它的作用/方式,我们将无法为您提供任何进一步的帮助。
-
如果可能的话,我建议通读所有docs.oracle.com/javase/tutorial/essential/concurrency。它有非常好的建议。
-
你可以在这里尝试使用观察者模式journaldev.com/1739/observer-design-pattern-in-java
-
@SotiriosDelimanolis 我试图带来我的代码的简化视图
-
您可以在服务器中集成某种
CountDownLatch或CompletableFuture,并将其作为function1的返回值公开。
标签: java multithreading server blocking