码迷,mamicode.com
首页 > 编程语言 > 详细

静态方法是否属于线程安全

时间:2014-10-24 14:25:11      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:java   sp   数据   问题   bs   c语言   方法   c#   nbsp   

现在主要是做C#开发,以前也做过JAVA,前两天抽冷子开发个记录日志的,想用静态来着,但是不知道怎么的突然觉得是不是线程不安全啊,要不用单例吧,于是用来单例。。。

但是心中疑惑不解决难受啊,最后还是看到JAVA里面有人解决说明了一下,在此总结一下吧

 

1、对于普通的方法都是线程安全的,只要不不是在一个方法中间让线程停下来了,都是安全的。只不过可能出现数据不一致的。多线程不是两个线程在同时跑,更不会两个线程同时跑在一个方法上。任何时刻在跑的只有一个线程,除非你把一个线程在某个方法上挂起来了,那么不同步的方法才会有另外一个线程进来到这个方法,如果这个线程把一些两个线程共同拥有的变量改变就会出问题。

2、这个静态方法本身并没有与其它线程共享资源,它用到的只是它自身的资源,线程是否安全只需要关注它用到的资源是否可能在其它线程中共用。

3、不涉及共享变量(全局/静态)永远线程安全

4、一般static而言确实是安全的,不过static方法不一定是线程安全的。和普通方法一样,一旦你传入的内容是共享的引用类型,即便是static方法,也一样不是线程安全的。

一般static,可以用C语言的想法去想。进入一个函数,会保存现场。把状态压入堆栈,然后申请了4字节寄存器,然后一直都是对这个寄存器进行操作。每次执行方法都要保存现场,重新来过,那么当然是线程安全的,但是还是上面说的,静态方法不见得是线程安全的,你的输入也有影响

静态方法是否属于线程安全

标签:java   sp   数据   问题   bs   c语言   方法   c#   nbsp   

原文地址:http://www.cnblogs.com/mvv118/p/4048160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!