Java服务器客户端线程问题

Arg*_*ros 3 java user-interface multithreading client-server

您好我有一个非常简单的客户端 - 服务器程序,它使用模拟简单atm的套接字.在程序的客户端部分,我有一个gui类和另一个与服务器通信的线程,因此gui和逻辑是分开的,并且在等待线程与服务器通信时gui也没有冻结.

我创建了一个线程,因为在连接时创建了clientsocket,并且它贯穿整个会话.问题是我让线程在无限循环中循环并询问gui用户是否按下任何键以便它可以处理这些操作.

关于此事的最佳做法的任何建议?我不想使用RMI,因为我是出于教育原因而开发的.

干杯

bas*_*ero 5

你可以使用BlockingQueue.GUI和客户端线程可以访问同一个队列对象.响应用户操作,GUI可以将()命令对象放入队列.客户端线程仍然有一个while循环,BUT将使用take()从队列中拉出命令对象.take()将阻止使用正确的线程同步原语,因此您不会有繁忙的循环.客户端命令之后的服务器响应可能涉及更新某些本地状态和/或更新gui,如果SwingWorker介入,我也不会感到惊讶.

有很多方法可以解决这个问题,但这是第一个跳到我脑海中的方法.