静态变量不会改变其他类

时间:2016-10-23 06:05:47

标签: java static

我有一个A类,它有一个初始化为0的静态变量,我在其他类中将此值更改为1。我在下面分享代码

public class Server {
    public static int flag;

    public static void main(String[] args)
    {
        flag = 0;
        while(true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            if (flag == 1) {
                System.out.println("Yo man");
            }
        }
    }
}

public class Client {
    public static void main(String[] args) {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        Server.flag = 1;
    }
}

2 个答案:

答案 0 :(得分:0)

您有两个主要方法的类,因此无法直接访问彼此的静态变量 如果您希望在客户端和服务器之间进行通信,它们有两个不同的主要方法,下面是一个可以提供帮助的指针 How to have 2 JVMs talk to one another

答案 1 :(得分:0)

只是为了完成您的特定请求,您可以将客户端和服务器作为线程运行:

public static void main(String[] args)
{
    new Thread(new Server()).start();
    new Thread(new Client()).start();
}

public static class Server implements Runnable
{
    public static int flag;

    @Override
    public void run()
    {
        flag = 0;
        while (true)
        {
            try
            {
                Thread.sleep(1000);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }

            if (flag == 1)
            {
                System.out.println("Yo man");
            }
        }
    }
}

public static class Client implements Runnable
{
    @Override
    public void run()
    {
        try
        {
            Thread.sleep(1000);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }

        Server.flag = 1;
    }
}

如果您想实现真正的客户端服务器架构,我建议您对如何在java中实现客户端服务器架构进行全面研究