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();
}
}
方法不会相互“干扰”,除非有一些涉及状态的类字段(变量)作为这些方法的作用对象
在您的示例中,这两种方法都是“纯”的,它们没有副作用(即,它们不会更改任何变量的值),因此它们都是线程安全的。死锁或线程将不得不等待另一个方法完成,则不会。线程调度大部分由您来完成。仅在
已同步
块的情况下,才会发生强制等待。