几个并发编程的例子(篇二)
在主线程里面直接调用,问题出在这里,这里没有达到同步。System.out.println("此时的so里面的a,b分别为a="+so.a+"b="+so.b);
直接访问字段无法保证其他线程的修改在该线程可见
1. 修改字段为volatile
2. 增加同步getValue()方法访问a/bSystem.out.println("此时的so里面的a,b分别为a="+so.a+"b="+so.b);
直接访问字段无法保证其他线程的修改在该线程可见
1. 修改字段为volatile
2. 增加同步getValue()方法访问a/b
在这里,首先虽然改变变量的是后台线程,但是在主线程输出那里后台线程仍在运行,那么直接访问变量,这里就会出现同步问题,虽然线程进去了加锁方法,但主线程直接访问了变量,所以会出现冲突,那么同步不可避免,使用加锁的getValue()还是比较好。
代码我运行过,是停不下来的。