package util;
/**
* @说明 变量安全测试
*/
public class Test {
public static void main(String[] args) {
Runnable accumelatora = new Accumulatort();
Thread threada = new Thread(accumelatora, "ThreadA");
Thread threadb = new Thread(accumelatora, "ThreadB");
threada.start();
threadb.start();
}
}
class Accumulatort implements Runnable {
// 实例变量
int locals = 0;
public void run() {
for (int i = 0; i <= 10; i++) {
locals += 1;
try {
Thread.sleep(1000);
} catch (Exception e) {
}
System.out.println(Thread.currentThread().getName() + "-->"
+ locals);
}
}
}
实例变 量为对象实例私有,在java虚拟机的堆中分配,如果在系统中只存在一个此对象的实例,在多线程环境下,就像静态变量那样,被某个线程修改后,其他线程对 修改均可见,故线程非安全;如果每个线程执行都是在不同的对象中,那对象与对象之间的实例变量的修改将互不影响,所以线程安全。(参考:
http://hnwsha.blog.sohu.com/236276313.html)
转载于:https://my.oschina.net/cnlw/blog/122957