静态方法的线程安全
2015-07-17 14:27
274 查看
先看一个类:
public class Test
{
public static String hello(String str)
{
String tmp = "";
tmp = tmp + str;
return tmp;
}
}
hello方法会不会有多线程安全问题呢?没有!
静态方法如果没有使用静态变量,则没有线程安全问题。
为什么呢?因为静态方法内声明的变量,每个线程调用时,都会新创建一份,而不会共用一个存储单元。比如这里的tmp,每个线程都会创建自己的一份,因此不会有线程安全问题。
注意:静态变量,由于是在类加载时占用一个存储区,每个线程都是共用这个存储区的,所以如果在静态方法里使用了静态变量,这就会有线程安全问题!
public class Test
{
public static String hello(String str)
{
String tmp = "";
tmp = tmp + str;
return tmp;
}
}
hello方法会不会有多线程安全问题呢?没有!
静态方法如果没有使用静态变量,则没有线程安全问题。
为什么呢?因为静态方法内声明的变量,每个线程调用时,都会新创建一份,而不会共用一个存储单元。比如这里的tmp,每个线程都会创建自己的一份,因此不会有线程安全问题。
注意:静态变量,由于是在类加载时占用一个存储区,每个线程都是共用这个存储区的,所以如果在静态方法里使用了静态变量,这就会有线程安全问题!
相关文章推荐
- HDU-5280
- Mommy, I found it!, 15 Awesome Linux Find Command Examples
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- Exclusive access
- php程序员绝不能违背的安全铁则
- maven 两条命令建立 web项目
- 线程池与ThreadPoolExecutor学习笔记
- jni 简介
- Android的LinearLayout.getLayoutParams().width 和 LinearLayout.getWidth() 的区别
- Scroller相关类使用大揭秘!!!
- 【socket】TCP 和 UDP 在socket编程中的区别
- 双机\RAC\Dataguard的区别
- syscall参数表
- 转载 httpclient 上传、下载文件
- android studio 的使用
- mySQL中replace的用法
- android的activitygroup使用
- secureCRT连接不上linux的其中一个最大的原因
- Unity自定义数据流
- linux c学习笔记08--文件操作