我编写了一个Java项目,其中两个类有主要方法(在我的例子中,一个类是服务器,另一个是客户端,他们正在进行通信,但这并不重要)。我想知道,如果两个类都访问同一个第三类,我应该期待什么样的行为:
class A{
public static ArrayList<String> list = new ArrayList<String>();;
}
class B{
public static void main(String[] args){
A.list.add(String.valueOf("Hello"));
System.out.println(list.size());
}
}
class C{
public static void main(String[] args){
A.list.add(String.valueOf("World"));
System.out.println(list.size());
}
}
如果我首先运行B类的main方法然后运行C类的主要方法,我会得到什么?我希望C类的主要方法不会看到由B类主方法添加的list-element,换句话说,它会像之前运行的B的主要方法一样打印“1”,但是我我不确定。它是否正确?那么两种主要方法是否看到另一种方法对A类的改变?或者每个主要方法是否都有“自己的A类版本”?
感谢您的帮助!
问候, 丹尼尔
答案 0 :(得分:3)
它在两个不同的JVM中运行。将有两个不同的类实例与JVM相对应。两个JVM不共享内存或任何东西。因此它不会影响任何类执行输出。如果您将在单个JVM中运行两个线程,则会发生同步问题。
答案 1 :(得分:1)
运行每个类将在不同的JVM实例(进程)中,所以基本上它们是两个不同的程序并且彼此无关