如果多个线程共同访问一个对象中的实例变量,则有可能出现非线程安全的问题。用线程访问的对象中如果有多个实例变量,则运行的结果有可能出现交叉的情况,前面演示过。如果对象仅有一个实例变量,则有可能出现覆盖的情况。
例如:
运行结果:
本实验是两个线程同时访问一个没有同步的方法,如果两个线程同时操作业务对象中的实例变量,则有可能会出现非线程安全的问题。前面其实已经演示过,现在改为同步方法:
运行结果:
实验结论:在两个线程访问同一个对象中的同步方法时,一定是线程安全的,本实验由于是同步访问,所以先打印出a,然后打印出b。