JAVA中的静态方法是创建单个实例吗?
我有个疑问。
假设在multithreading环境中,10K用户同时使用一个站点,并且该站点具有静态方法。
如果JAVA中的静态方法创建单个实例,则第10k个用户需要等待该方法,直到其余用户完成其使用。
我对吗?
有人可以解释一下吗?
如果JAVA中的静态方法创建单个实例,则第10K个用户需要等待该方法,直到剩余的usres完成使用。
调用静态方法不会隐式创建实例。 当然,你可以在方法中这样做 – 但你不必这样做。
创建实例也不需要锁定 – 尽管如此,您可以根据需要添加同步。
因此,对于不需要对共享数据进行任何同步访问的简单静态方法,多个线程同时调用该方法应该没有问题。
我想你的意思是像单身人士或工厂,例如
public class X { public static X getInstance() { return new X(); } private X() {} }
那么一切都取决于你在静态方法上做了什么。 如果该方法不关心线程(如上例所示),那么它不应该同步并且可以同时执行,然后你就错了,因为可以同时执行X.getInstance()
并且10Kth赢了’我必须等待以前完成。
如果方法不能是multithreading的,那么它应该是同步的(整个方法或者它的一部分)然后是的,你是对的。
NO..10K用户无需等待该方法,直到剩余的usres完成那里使用。
因为它不是静态方法不同步…所以多个线程可以访问相同的对象。