我有疑问。
假设在多线程环境中,10K个用户同时使用一个站点,并且该站点有一个静态方法。
如果JAVA中的静态方法创建单个实例,那么第10k用户需要等待该方法,直到剩余的用户完成其使用。
对吗?
任何人都可以请解释吗?在JAVA中是静态方法创建单个实例吗?
1
A
回答
6
如果JAVA中的静态方法创建单个实例,则第10K个用户需要等待该方法,直到剩余的usres完成用法。
调用静态方法不会隐式创建一个实例。你可以这样做的方法,当然 - 但你不必这样做。
创建实例也不需要锁 - 尽管如此,您可以根据需要添加同步。
因此,在不需要对共享数据进行任何同步访问的简单静态方法的情况下,多个线程同时调用该方法应该没有问题。
0
NO.10K用户不需要等待该方法,直到剩余的使用完成使用。
因为它不是静态的方法不同步...所以多个线程可以访问同一个对象。
2
我想你的意思是像单身人士或工厂,例如
public class X {
public static X getInstance() {
return new X();
}
private X() {}
}
然后这一切都取决于你在静态方法上做了什么。如果该方法不关心线程(如上例),那么它不应该被同步并且可以被同时执行,然后你错了,因为可以同时执行X.getInstance()
并且10Kth不必等待以前完成。
如果方法不能是多线程的,它应该是同步的(整个方法或其中的一部分),那么是的,你是对的。
相关问题
- 1. Java:在静态方法中从超类创建一个子类的实例
- 2. Java静态实例创建者?
- 3. 创建实例(静态)
- 4. 在静态方法中包装单例实例方法是不好的?
- 5. Java静态/实例方法优化
- 6. 静态方法的Java实例变量
- 7. 在java中的静态方法vs实例方法的决定?
- 8. 静态方法vs静态实例
- 9. 一个静态方法总是可以转换为一个实例方法吗?
- 10. Java泛型,单例和静态方法
- 11. 创建一个类的静态实例
- 12. 为什么静态方法在单例实例中不可用?
- 13. 静态类是一个单例吗?
- 14. 在Java中创建静态嵌套类的实例
- 15. 静态var,方法还是单例?
- 16. 工厂方法创建单例实例
- 17. 我可以创建一个内部静态类的实例吗?
- 18. 静态或实例方法在.NET中扩展更好吗?
- 19. Mongoose'静态'方法与'实例'方法
- 20. 静态方法和实例方法C#
- 21. 在Java中创建静态单例模式
- 22. 如何从静态方法返回值创建C#类实例?
- 23. 创建新的实例或使用公共静态方法?
- 24. 从静态方法内创建类实例
- 25. 创建实例以调用静态方法的模式名称
- 26. 如何从静态方法创建类的实例?
- 27. 需要在静态和非静态方法中使用实例
- 28. 这是在C++中创建单例类的正确方法吗?
- 29. 如何使静态工厂方法不是静态实例?
- 30. 在Python中的类中创建一个类的静态实例