Multithreading 线程干扰同一类中的方法

Multithreading 线程干扰同一类中的方法,multithreading,Multithreading,例如,我有一个类,其中包含将由不同线程使用的方法。 问题是,如果这样使用,线程是否会相互干扰: Class sharedMethods{ void method1(){} static void method2(){} } Thread1{ sharedMethods sm = new sharedMethods(); while(1){ sm.method1(); } } Thread2{ while(1){

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

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();
         }
    }
方法不会相互“干扰”,除非有一些涉及状态的类字段(变量)作为这些方法的作用对象


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

死锁或线程将不得不等待另一个方法完成,则不会。线程调度大部分由您来完成。仅在
已同步
块的情况下,才会发生强制等待。