除此之外还有第三种方法,使用特殊成员变量volatile
如果仅仅因为一两个成员变量的修饰而使用同步,开销还是很大。此时可以使用volatile关键字来修饰成员变量。
它的作用在于告诉虚拟机该成员变量可能已经被修改了,需要进行确认才能使用,这样就避免了同步的需求
*/
public class People implements Runnable{
private volatile int number = 0;//用volatile来修饰成员变量
public void run() {
for(int i=0;i<5;i++){
try{Thread.sleep(100);}catch(Exception e){}
System.out.println(Thread.currentThread().getName()+": "+number++);
}
}
public static void main(String args[]){
People demo = new People();
Thread t1 = new Thread(demo);
Thread t2 = new Thread(demo);
t1.start();
t2.start();
}
}