工具类 静态方法 线程安全

一般来说,工具类都是静态方法,只要静态方法内不引用可更改状态的静态字段就是线程安全的。因为每次调用都会分配新的栈空间。

但,若传入的是引用类型变量,而且如果同一个对象可能同时传入给2个可更改其状态的静态方法,就会存在线程安全问题。

根本还是要清楚,静态方法内是否含有状态可更改的共享资源。

public class MyThread implements  Runnable {
    StringBuilder sb;
    String signal;
    public void run() {
        T(sb,signal);
    }
    public MyThread(StringBuilder stringBuilder,String signal){
        this.sb=stringBuilder;
        this.signal=signal;
    }
    public static  void T(StringBuilder stringBuilder,String signal){
        for(int i=0;i<10;i++){
            stringBuilder.append(signal);
            System.out.println(stringBuilder);
        }

    }
}
View Code

如上代码,线程安全的隐患就是传入的StrinbBuilder是否是同一对象,若非,则线程安全。

原文地址:https://www.cnblogs.com/lansor/p/3304950.html