代码如下:
public class Demo01 {
public static void main(String[] args) {
Demo01Service service = new Demo01Service();
Thread t1 = new Demo01ThreadA(service);
t1.start();
Thread t2 = new Demo01ThreadB(service);
t2.start();
}
}
class Demo01Service{
public void add(String userName) {
int num=0;
if(Objects.equals("a",userName)){
num=100;
System.out.println("a set over");
//睡眠2s,等待另一个线程修改num的值
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
else {
num=200;
System.out.println("b set over");
}
System.out.println("userName="+userName+","+"num="+num);
}
}
class Demo01ThreadA extends Thread{
private Demo01Service service;
public Demo01ThreadA(Demo01Service service){
this.service=service;
}
@Override
public void run() {
service.add("a");
}
}
class Demo01ThreadB extends Thread{
private Demo01Service service;
public Demo01ThreadB(Demo01Service service){
this.service=service;
}
@Override
public void run() {
service.add("b");
}
}
运行结果:
看出在线程B中改变了num的值,但不会影响A线程中num的值。说明局部变量是线程安全的。

京公网安备 11010502036488号