发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

多个虚拟机如何做同步问题????

2003-02-13 15:47
赞助商链接


http://www.jdon.com:81/jive/thread.jsp?forum=121&thread=4653



banq
据我理解,局部变量包含两种:
一个类似int 之类的原始型变量
二是String之类的对象型变量;

如果是后者,容易发生deadlock,原因:
1线程正在占据A资源,等待B资源的释放;
2线程正在占据B资源,等待A资源的释放;



Danial
刚登陆进来浏览了一下,
我觉得这不是问题呀?局部变量不存在同步的问题。进入一个函数就分配压栈之类的, 出来就释放了,


同步问题:

public class xx{

public int fieldsX = 4;//inputInt 成员变量完全没问题
public static int fieldsX2 = 4;
//需要同步

public Factory fieldsF = new Factory();
//fieldsF 成员变量完全没问题
public static Factory fieldsF2;
//需要同步

static{
fieldsF2 = new Factory();
}


public Factory yy(Factory inputFactory,int inputInt){
//inputInt 原始型变量完全没问题,
//inputFactory 怎么说呢,传的是引用,
//如果改变它(inputFactory)的成员变量 需要同步,否则就不用了
int intLocal = 3;
//完全没问题
Factory factoryLocal;
if(){
factoryLocal = new Factory();
factoryLocal.mm = 23;
//完全没问题
return factoryLocal;
}
else{
factoryLocal = inputFactory;
synchronized(factoryLocal){
factoryLocal.mm = 23;
//需要同步
}
return factoryLocal;
}
}

}


不知以上说得对否?

一个问题:如果容器启动了多个虚拟机,很可能的,
如何做到 static成员变量 的同步问题?共享内存?
不管它,让容器自己管理?

2003-02-13 16:10

同步前提都是一个虚拟机JVM

同步问题首先要考虑是否原子型atomic,象
public static int fieldsX2
就是原子型,不需要同步,long 和double则是非同步,写法:
public static volatile long fieldsX2
volatile就保证了线程内存和主内存一致了。

关于方法,尽量不要使用同步,需要同步时,一定要理解方法中执行的过程。你举例的方法yy 表明你好像没有理解方法的同步。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com