线程干扰同一类中的方法

时间:2014-03-07 22:05:13

标签: multithreading

例如,我有一个类,其中包含将由不同线程使用的方法。 问题是,如果像这样使用线程会相互干扰:

Class sharedMethods{
     void method1(){}
     static void method2(){}
}

Thread1{
     sharedMethods sm = new sharedMethods();
     while(1){
         sm.method1();
     }
}

Thread2{
     while(1){
         sharedMethods.method2();
     }
}

或者在这种情况下,当线程共享同一个对象时:

    Class sharedMethods{
         string aa = "AAAAAAA";
         string bb = "BBBBBBB";
         string method1(){return aa;}
         string method2(){return bb;}
    }

   Class Main{
         static sharedMethods sm = new sharedMethods();
   }

    Thread1{
         while(1){
             string aa = Main.sm.method1();
         }
    }

    Thread2{
         while(1){
             string bb = Main.sm.method2();
         }
    }

1 个答案:

答案 0 :(得分:0)

除非涉及某些状态 - 这些方法所依据的类字段(变量),否则方法不会相互“干扰”。

在你的例子中,两种方法都是“纯粹的”,它们没有副作用(即它们不会改变任何变量的值),因此两者都是线程安全的。