是没有字段线程安全的类

时间:2016-02-12 10:56:09

标签: java multithreading thread-safety

如果我创建一个只有方法而没有变量的类,每个方法都有自己的局部变量,那么该类是否是线程安全的?例如。

   public class Client {

                public String xyz(final String inputXML) {
                      DataInputStream dis = null;
                      DataOutputStream dout = null;
                      Socket clientSocket = null;
                        //do some processing 
                    }

                public String abc(final String inputXML) {
                      DataInputStream dis = null;
                      DataOutputStream dout = null;
                      Socket clientSocket = null;
                        //do some processing 
                    }
        }

现在,如果我启动此Client的多个线程,那么该类是否是线程安全的?

2 个答案:

答案 0 :(得分:4)

是的,你的班级是线程安全的。

如果出现以下情况,则方法是线程安全的:

  • 无法访问共享变量
  • 访问共享不可变变量
  • 访问变量状态只能以线程安全的方式修改(例如通过同步方法)
  • 使用与使用相同变量
  • 的其他线程相同的锁来访问带有synchronized块的变量

您的方法无法访问共享变量,因此是线程安全的

答案 1 :(得分:0)

理论上是的,实际上它取决于变量的值,如果它们是独立实例,或者它们指向系统中某处的相同实例

相关问题