首页 > 解决方案 > 没有java中的println语句,锁不会被撤销

问题描述

我是Java语言的初学者。我有一个客户端服务器应用程序。在此应用程序中,需要对多个客户端访问服务器上的资源进行互斥。

我试图通过使用锁定变量来实现互斥。但是我不知道为什么当当前线程完成它的工作而没有在循环中使用 println 语句时,lock 变量没有得到更新。

下面是 server.java 文件的代码片段 -

int shown = 0;
int value = server.lock;
while(value != 1) {
  if(shown == 0) {
      System.out.println("Server is busy. Please wait");
      shown++;
   }
   value = server.lock;
   // Below statement.
   System.out.print("\t");
  }
shown = 0;
server.lock--;

每当当前线程的工作完成时,锁变量总是更新为 1

该代码与 println 语句完美配合,但没有它就无法工作。就像时间不断重复一样。我不知道为什么。

任何帮助表示赞赏。

谢谢,

P.帕雷克

标签: javamultithreadingclient-server

解决方案


推荐阅读