简而言之,我有两节课:

public final class ServerMain
{

      static List<Table> s_AvailableGameTables = new Vector<Table>();
      static List<Table> s_OccupiedGameTables = new Vector<Table>();
      static List<ServerThread> s_PlayersOnServer = new Vector<ServerThread>();
...
}
class ServerThread extends Thread{
...}
ServerMain是服务器本身,它通过为刚刚连接到ServerThreads的每个用户分配一个新的ServerThread来管理ServerMain

我的问题很简单:
  • 当我当前正在特定的ServerThread中运行时,如果我已经在特定的ServerThread中“离开”了ServerMain的区域,则我想访问它们并更新它们,我该怎么做呢?在后台运行的线程。
    唯一的方法是保留每个服务器线程对papa ServerMain的引用吗?
  • 可能会引起一些问题,好像代码的两个区域可以同时更新ServerMain本身和ServerThread的同一列表一样,后者现在知道谁是大老板?
  • 一般问题:套接字编程是指UDP还是TCP?

  • 我想听听一些好建议。提前致谢。

    最佳答案

    对于#1,假设实例是可访问的(例如,它们是public),则不需要实例来访问ServerMain的静态成员,则可以将其作为ServerMain.MyVar进行访问。

    对于#2,是的,您需要研究使用synchronized语句来防止多个线程同时写入列表,或者使用线程安全列表实现。

    对于#3,术语“套接字编程”可以指UDP或TCP。您使用哪种类型的套接字取决于您要实现的类型的应用程序。

    关于java - 关于使用Java开发带有套接字的服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6527109/

    10-10 09:45