2013-03-11 90 views
1

我有疑问。
假设在多线程环境中,10K个用户同时使用一个站点,并且该站点有一个静态方法。
如果JAVA中的静态方法创建单个实例,那么第10k用户需要等待该方法,直到剩余的用户完成其使用。
对吗?
任何人都可以请解释吗?在JAVA中是静态方法创建单个实例吗?

回答

6

如果JAVA中的静态方法创建单个实例,则第10K个用户需要等待该方法,直到剩余的usres完成用法。

调用静态方法不会隐式创建一个实例。你可以这样做的方法,当然 - 但你不必这样做。

创建实例也不需要锁 - 尽管如此,您可以根据需要添加同步。

因此,在不需要对共享数据进行任何同步访问的简单静态方法的情况下,多个线程同时调用该方法应该没有问题。

0

NO.10K用户不需要等待该方法,直到剩余的使用完成使用。

因为它不是静态的方法不同步...所以多个线程可以访问同一个对象。

2

我想你的意思是像单身人士或工厂,例如

public class X { 

    public static X getInstance() { 
     return new X(); 
    } 

    private X() {} 
} 

然后这一切都取决于你在静态方法上做了什么。如果该方法不关心线程(如上例),那么它不应该被同步并且可以被同时执行,然后你错了,因为可以同时执行X.getInstance()并且10Kth不必等待以前完成。

如果方法不能是多线程的,它应该是同步的(整个方法或其中的一部分),那么是的,你是对的。

相关问题