本帖最后由 黑马唐贤来 于 2013-1-22 20:15 编辑
private static int j = 0;(这里这与写)
private int j = 0;这么写有区别么。
上面的j是本类和本类的子类的共享数据,
下面的j是每创建一个本类或本类的子类对象,都会拥有不同的j变量
还有 下面dec 和 inc 不加synchronized呢~~~
如果dec 和 inc 不加synchronized,那样打印出的数据会错乱,
比如j=1时,1线程刚执行了j++后,还没有打印输出,2线程获得了cpu执行权,又执行了j++,并输出了j=3,而这个时候1线程又抢到了cpu执行权,这时1线程继续没有执行的打印操作,而这时j的值已经变为了3,打印出的也就是3,2却没有打印出来,
如果打个比方的话就是,你在一家公司工作,有一份工作还没有完成,但你却临时有急事需要处理,请了长假.可这时你的位置却被人顶替了,等你回来时,什么都和以前不一样了,这时就出现了错乱 |