静态类只有静态方法(没有属性,字段或其他东西)并且有多个线程同时访问这些方法会有任何问题吗?
答案 0 :(得分:5)
只要没有共享状态或外部资源,那么:没有任何风险。你已经提到“没有字段”等,这很好 - 只要它们不是间接谈论共享状态(也许是通过一些在这种情况下不是线程安全的常见参数,或者通过它调用的一些其他实用程序方法,它们以凌乱的方式共享状态),你应该没问题。
答案 1 :(得分:0)
是的,可以。这取决于你的方法是如何编写的。现在,如果只有静态方法,理论上这意味着完全可重入的代码没有问题。
答案 2 :(得分:0)
可能,是的。
想象:
class Logger
{
WriteToLogs(string msg)
{
// Write data to file1
...
// Write data to file2
...
}
}
现在想象你有多个线程试图同时调用WriteToLog()。在thread1完成写入日志文件之前调度thread2会发生什么?在这种情况下,您最终可能会遇到各种数据损坏。
静态类和方法本身并不提供任何形式的线程同步,锁定等。这是您设计和实现的。
答案 3 :(得分:0)
是的,例如,单例实现可以是静态的,但是它们必须实现诸如double checked locking之类的机制来防止多线程问题。