突然有个疑惑,关于服务端的单态代理类 模拟一个代理类P,这个类用来封装数据操作(无状态的代理类),客户端调用的时候,这个类以单态的形式存在于服务端.当客户端A请求代理P,而另一客户端B也请求代理P去处理数据时( 同一时刻),那么作为服务端唯一的单态实例,它被两个不同的客户端A,B所调用时,会先被谁执行呢?A还是B,还是同时.会不会存在锁的问题,或者葬数据的问题.类似于EJB的session bean中的代理类,但俺不记得session bean的实例是不是在虚拟机上是唯一的.请各位帮忙给解释解释. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议搞清楚,会话bean的几种状态,有点区别的线程问题,同意楼上.一般都会使用到,ThreadLocal创建副本,应该没什么问题!! 如果线程要是同步的话我想不会出现死锁问题。再一个,A和B的先后大多数情况下取决于优先级的高低,但是还要看CPU是如何分配的。缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级JavaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。以上个人观点。 楼主说的如果不是用rmi实现的话就是一个多线程问题,涉及到成员变量程序就会有同步问题,rmi的没有试过。ejb的session bean不是唯一的,我觉得和servlet的session的概念在一定程度上有一样的作用。个人观点仅供参考 A和B同时请求P代理,既然P是无状态的,就一定可以被多线程访问,所以A和B谁先访问P都无所谓,它们肯定都有自己的线程Thread A和Thread B,对于这两个线程来说,P就是可以共享的资源,它们可以同时使用P这个资源来完成各自的任务除非要临界资源,否则不需要改变单例模式,Spring和EJB 3.0都倾向于容器管理单例,因为到Session Bean这一层大多数应用都要求能被多线程访问,偶虽然只用过EJB2.0,主要对Spring熟,但相信J2ee技术发展下去的原理是相通的。 会开启两个线程,不说EJB,就说Servlet,也是单例的,多个客户访问,每个客户会开启自己的线程,具体哪个运行哪个中断,取决于CPU时间.单例的类的成员变量被线程所共享.如果有成员变量可能会发生并发的问题,可能要采取同步的机制.当然后面这些要看你程序怎么去设计. java crossword编程 google了很久 高分求解答 学习软件的疑惑!难道软件业只是做这些吗? java swing程序如何退出 100分~求这个Layout类源!! 探讨java入门 显示计算机目录和文件得tree是如何实现得,最好有源代码 如何通过菜单切换同一对象下jpanel。有何方法,如果有代码示范,就更好了 询问学习方向 安装VisualAge for Java 出错(很急呀!!!) 类型转换!CONVERT函数 初学javaBean遇到的问题
线程问题,同意楼上.一般都会使用到,ThreadLocal创建副本,应该没什么问题!!
再一个,A和B的先后大多数情况下取决于优先级的高低,但是还要看CPU是如何分配的。缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级JavaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。以上个人观点。
单例的类的成员变量被线程所共享.如果有成员变量可能会发生并发的问题,可能要采取同步的机制.当然后面这些要看你程序怎么去设计.