线程安全
public class Text {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
HasSelfPrivateNum num = new HasSelfPrivateNum();
HasSelfPrivateNum num1 = new HasSelfPrivateNum();
ThreadA a = new ThreadA(num);
ThreadB b = new ThreadB(num1);
a.start();
b.start();
}
}
public class HasSelfPrivateNum {
int num;
public void addI(String username) {
if (username.equals("a")) {
num = 100;
System.out.println("a set over");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
num = 200;
System.out.println("b set over");
}
System.out.println(username + "num = " + num);
}
}
public class ThreadB extends Thread{
private HasSelfPrivateNum num;
public ThreadB(HasSelfPrivateNum num) {
// TODO Auto-generated constructor stub
this.num = num;
}
public void run() {
// TODO Auto-generated method stub
num.addI("b");
}
}
public class ThreadA extends Thread {
public HasSelfPrivateNum num;
public ThreadA(HasSelfPrivateNum num) {
// TODO Auto-generated constructor stub
this.num = num;
}
public void run() {
// TODO Auto-generated method stub
num.addI("a");
}
}
只有共享的资源才有线程不安全,共享资源的读写访问才需要同步化