首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-10-22 
几个并发编程的例子(篇二)第三个例子很迷惑,没看到其他线程直接访问ShareObject成员变量并修改他们啊...

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

                  第三个例子很迷惑,没看到其他线程直接访问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()还是比较好。
                  代码我运行过,是停不下来的。

热点排行