0
我有一个类存储几个字符串和整数。这些值正在我的程序中不断更新。多线程 - 对类成员变量的独占访问?
在同一个程序中,我也有一个简单的套接字服务器,它处理包含在我的类的对象中的数据的传入请求。由于服务器代码包含一个while(true)
循环,我假设我需要将代码放在单独的线程中。否则一旦我进入这个循环,没有别的东西会被执行?然后,我会将对我的类的引用传递给服务器线程,以便可以获取值。
static ServerSocket socket1;
static Socket connection;
while (true) {
connection = socket1.accept();
...
}
无论如何,我想知道如果我要创建一个单独的服务器线程,那么我可能会遇到同步问题。当我的课程中遇到某些条件时,课程成员会更新。如果服务器当前正在更新,我不希望服务器能够读取这些值。我怎么能这样做呢?
有什么问题吗?如果你有多个线程访问同一个变量,那么,是的,你需要锁定以防止比赛。 –
我的问题是我如何去做这件事 –
多线程同步是一个巨大的话题。我建议阅读完整的Java并发实践,http://jcip.net/ – Luis