只有静态方法(没有属性,字段或其他任何东西)有一个静态类,并有多个线程同时访问这些方法会有任何问题吗?静态方法和多线程
Q
静态方法和多线程
1
A
回答
0
是的,可以。这取决于你的方法如何编写。现在,如果只有静态方法,这在理论上意味着完全重入代码没有问题。
5
只要没有共享状态或外部资源,那么:没有任何风险。你提到“没有领域”等,这是很好的 - 只要它们不是间接的谈论共享状态(也许通过一些在这种情况下不是线程安全的常见论点,或者通过一些其他其他它调用的实用方法,它们以凌乱的方式共享状态),你应该没问题。
0
可能,是的。
试想:
class Logger
{
WriteToLogs(string msg)
{
// Write data to file1
...
// Write data to file2
...
}
}
现在想象你有多个线程试图()同时调用WriteToLog。在thread1完成写入日志文件之前,thread2被调度时会发生什么?在这种情况下,您最终可能会遇到各种各样的数据损坏。
静态类和方法不会固有地提供任何形式的线程同步,锁定等。这是供您设计和实现的。
0
是的,例如单例实现可以是静态的,但他们必须实现诸如double checked locking之类的机制来防止多线程问题。
相关问题
- 1. java多线程和静态方法
- 2. 静态方法和线程
- 3. 执行在多线程静态方法
- 4. 多线程和静态块
- 5. 静态方法和线程安全
- 6. Java静态方法和线程安全
- 7. 静态方法和线程安全
- 8. 线程和静态方法在C#
- 9. 线程调用静态和非静态方法
- 10. 静态方法和静态块之间的线程安全
- 11. 静态方法vs实例方法,多线程,性能
- 12. 多态性和静态方法
- 13. 是静态方法线程安全
- 14. 静态方法的线程安全
- 15. 是静态方法线程安全的
- 16. 线程使用非静态方法
- 17. SqlServer类静态方法 - 线程安全
- 18. Java - 静态方法的线程安全
- 19. 多线程应用程序中的静态类/方法
- 20. 多线程应用程序的静态方法
- 21. 静态成员和多线程
- 22. 静态变量和多线程
- 23. 了解多线程,代表和静态
- 24. 静态函数和多线程中的C++静态成员
- 25. 静态和非静态方法的类内穿线
- 26. 静态类的静态方法,这种方法线程安全吗?
- 27. 线程中的静态同步和非静态同步方法行为差异
- 28. Windows服务和线程工作代码的静态与非静态方法
- 29. 很多调用静态方法的单线程
- 30. 当多线程访问时静态方法变慢