例如,我有一个类,其中包含将由不同线程使用的方法。 问题是,如果像这样使用线程会相互干扰:
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();
}
}
答案 0 :(得分:0)
除非涉及某些状态 - 这些方法所依据的类字段(变量),否则方法不会相互“干扰”。
在你的例子中,两种方法都是“纯粹的”,它们没有副作用(即它们不会改变任何变量的值),因此两者都是线程安全的。