读书人

几个并发编程的事例(篇二)

发布时间: 2013-10-22 16:17:03 作者: rapoo

几个并发编程的例子(篇二)

                  第三个例子很迷惑,没看到其他线程直接访问ShareObject成员变量并修改他们啊... 第三个例子很迷惑,没看到其他线程直接访问ShareObject成员变量并修改他们啊...
                  在主线程里面直接调用,问题出在这里,这里没有达到同步。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()还是比较好。
                  代码我运行过,是停不下来的。

读书人网 >编程

热点推荐