package 对象及变量的并发访问2;
/**
* 方法内的变量为线程安全
*
* 非线程安全问题存在于实例变量中,对于方法内部的私有变量,则不会存在非线程
* 安全问题,结果是“线程安全”的。
*
* 结果分析 : 方法中的变量不存在非线程安全问题,永远都是线程安全的,这是因为方法内部的变量具有私有特性。
*/
/**
* 测试
*/
class HasSelfPrivateNumT211 {
public void addI(String userName){
try {
int num=0;
if(userName.equals("a")){
num=100;
System.out.println("a set over!");
Thread.sleep(2000);
}else {
num=200;
System.out.println("b set over!");
}
System.out.println(userName+"num="+num);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class ThreadAT211 extends Thread{
private HasSelfPrivateNumT211 numT2211;
public ThreadAT211(HasSelfPrivateNumT211 numT2211){
super();
this.numT2211=numT2211;
}
@Override
public void run() {
super.run();
numT2211.addI("a");
}
}
class ThreadBT211 extends Thread{
private HasSelfPrivateNumT211 numT2211;
public ThreadBT211(HasSelfPrivateNumT211 numT2211){
super();
this.numT2211=numT2211;
}
@Override
public void run() {
super.run();
numT2211.addI("b");
}
}
/**
* 运行
*/
class RunT211 {
public RunT211(){
HasSelfPrivateNumT211 numT2211=new HasSelfPrivateNumT211();
ThreadAT211 at2211=new ThreadAT211(numT2211);
at2211.start();
ThreadBT211 bt2211=new ThreadBT211(numT2211);
bt2211.start();
}
}
public class T2101 {
public static void main(String[] args) {
RunT211 runT211 =new RunT211();
}
}
方法内的变量为线程安全——T2101
最新推荐文章于 2022-11-11 07:49:08 发布