JAVA中的并发问题!

ben0759 2008-09-09 01:57:13
我一直都很不理解servlet的做法,对于并发的处理机制.
例如:在service方法中,写了一个同步锁(synchronized),那么,是不是有一个用户登陆进去,进入了锁,其他用户就进不了这个页面呢?假如我在锁里面做一个for循环,循环次数接近无限大,是不是其他用户就不能进入这个页面?
另外一个就是servlet中的工厂模式.
我做了一个dao的单例模式,在action中,实例化这个单例模式,那这个实例是怎么运用的呢?每个人都是公用这个单例,就不会存在并发问题吗?毕竟只有一个实例,在内存中是怎么分配的?好象有10000个IP同时访问这个页面,这个单例如何分配?

谢谢各位高手给我指点!~
...全文
530 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
creso 2011-12-09
  • 打赏
  • 举报
回复
不同用户的请求进入的servlet都是不同的。。。
huangxw000 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 funcreal 的回复:]
我解释一下第二个问题。
“每个人都是公用这个单例,就不会存在并发问题吗?”
当然存在问题,单例也只不过是一个普通的对象而已,如果有必要的话,单例也是需要进行同步的。
举个例子:你的这个单例是一个不变类,那么就不需要同步。如果你只是从这个类读取数据,那么就不需要同步。如果这个类不保存任何属性值,那么也不需要同步。等等...
说白了,单例类和同步没有直接的联系。
[/Quote]顶
cuisj922_2010 2011-12-09
  • 打赏
  • 举报
回复
servlet里最好别加锁。
menghuanxingyuan 2011-12-08
  • 打赏
  • 举报
回复
。。。。。。一个用户一个连接,在同一个连接中,不同请求访问同一个Servlet才会同步数据
ben0759 2009-03-31
  • 打赏
  • 举报
回复
ewsanshao 2009-01-13
  • 打赏
  • 举报
回复
一楼讲的不错啊!!一个工厂他制造汽车,生产汽车时就要用它,但是如果为了每造一辆汽车就要建个工厂是不是太浪费资源了。把它做成单例模式为的就是为我们节省资源,他可以动态调节生产线。至于要生产出什么样的汽车那要看每条生产线怎么造了。如果造出的汽车是一个全新的instance,比如用new 生成的,这些汽车已经是一个单独的实例了,即使所有属性一样在内存里他们仍然是单独存在的,如果你想再让这张汽车提供多线程服务那就有问题了, ,就单引用他而言是没有问题的。
lliiqiang 2008-12-17
  • 打赏
  • 举报
回复
是等待前面的请求处理完毕,而不是无法进入

同步是解决并发问题的常见方法
ben0759 2008-12-17
  • 打赏
  • 举报
回复
越来越不理解了。。
山巅 2008-09-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 java2000_net 的回复:]
1 你理解的没错,如果某个连接进入了同步范围不出来了,其他连接只有等待
2 不是所有问题都是适合单例模式的,这个不是万金油。 需要根据实际情况分析。 我一般在服务类才使用单例,且保证里面的每个方法都是线程安全的。
[/Quote]

请教一下,你在第二点中说的“服务类”具体指什么类,能不能举个例子,谢谢!
ben0759 2008-09-25
  • 打赏
  • 举报
回复
我也觉得
me old 2008-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ben0759 的回复:]
引用 1 楼 gzbao9999 的回复:
同步锁(synchronized) 一旦有请求进入一个synchronized的方法,其他对该方法的请求全部要等待,直到该请求处理完毕离开此方法,这和里面有没有for循环没有关系。
单例模式 在dao中,通常将SessionFactory设计为单利模式,此単例对象sessionFactory用于生产bean,也就是制造session。打个比方来说,有一个汽车工厂SessionFactory,这个工厂的功能就是可以生产很多汽车。虽然需要的汽车数量很多,但…
[/Quote]


你说的同一个汽车是同一个SessionFactory,但并不是同一辆汽车.
ben0759 2008-09-24
  • 打赏
  • 举报
回复
问题还没解决。 .
jiansord 2008-09-24
  • 打赏
  • 举报
回复
同步令牌
huanga52 2008-09-17
  • 打赏
  • 举报
回复
jf
ben0759 2008-09-11
  • 打赏
  • 举报
回复
顶起!
ben0759 2008-09-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gzbao9999 的回复:]
同步锁(synchronized) 一旦有请求进入一个synchronized的方法,其他对该方法的请求全部要等待,直到该请求处理完毕离开此方法,这和里面有没有for循环没有关系。
单例模式 在dao中,通常将SessionFactory设计为单利模式,此単例对象sessionFactory用于生产bean,也就是制造session。打个比方来说,有一个汽车工厂SessionFactory,这个工厂的功能就是可以生产很多汽车。虽然需要的汽车数量很多,但是通常一家工厂就够用了,建一…
[/Quote]


但是这个SessionFactory是单例模式啊,如果按照你这样的举例,不应该是这个汽车工厂应该是一个只能生产一台汽车的工厂吗?所以人都只能拿到同一个汽车.这样理解对吗?
axman 2008-09-09
  • 打赏
  • 举报
回复
servlet规范并没有规定以单例还是多例来实现.如果某一url对应的servlet类是多个实例服务的.
service方法中同步也不能保证其它用户不能入同步块的逻辑.这要看你在什么对象上同步.这和servlet本身并没有多大关系.
是要看被同步的对象对于这个service方法的范围.如果是方法内定义的对象,同步其实就是没有任何作用.
funcreal 2008-09-09
  • 打赏
  • 举报
回复
我解释一下第二个问题。
“每个人都是公用这个单例,就不会存在并发问题吗?”
当然存在问题,单例也只不过是一个普通的对象而已,如果有必要的话,单例也是需要进行同步的。
举个例子:你的这个单例是一个不变类,那么就不需要同步。如果你只是从这个类读取数据,那么就不需要同步。如果这个类不保存任何属性值,那么也不需要同步。等等...
说白了,单例类和同步没有直接的联系。
老紫竹 2008-09-09
  • 打赏
  • 举报
回复
1 你理解的没错,如果某个连接进入了同步范围不出来了,其他连接只有等待
2 不是所有问题都是适合单例模式的,这个不是万金油。 需要根据实际情况分析。 我一般在服务类才使用单例,且保证里面的每个方法都是线程安全的。
gzbao9999 2008-09-09
  • 打赏
  • 举报
回复
同步锁(synchronized) 一旦有请求进入一个synchronized的方法,其他对该方法的请求全部要等待,直到该请求处理完毕离开此方法,这和里面有没有for循环没有关系。
单例模式 在dao中,通常将SessionFactory设计为单利模式,此単例对象sessionFactory用于生产bean,也就是制造session。打个比方来说,有一个汽车工厂SessionFactory,这个工厂的功能就是可以生产很多汽车。虽然需要的汽车数量很多,但是通常一家工厂就够用了,建一个工厂的系统开销是比较大的,所有单例是比较合适的。
另外需要注意的是,SessionFactory是线程安全的,多个并发线程可以同时访问一个SessionFactory 并从中获取Session实例。而Session并非线程安全,也就是说,如果多个线程同时使用一个Session实例进行数据存取,则将会导致Session 数据存取逻辑混乱....
软件概述 UG(Unigraphics NX)是一款由西门子(Siemens PLM Software)开发的交互式CAD/CAM/CAE系统。作为全球领先的产品工程解决方案,它集成了产品设计、工程仿真与制造加工于一体。其功能强大且应用广泛,能够轻松实现各种复杂实体和造型的构造,为模具、汽车、航空航天及通用机械等行业提供了高性能的机械设计与制图灵活性。 软件基础信息 • 支持系统: 64位 Windows 10、Windows 11 核心功能模块 一、创新设计:高效、灵活、无缝协同 全链路产品设计 涵盖从2D布局、3D建模、装配设计到图纸文档记录的各个环节,大幅提升设计吞吐量,缩短交付周期超35%。 强大的同步建模技术 打破数据壁垒,可无缝导入并直接修改来自其他CAD系统的几何模型,是跨平台协同设计的理想选择。 复杂装配管理 专为大型复杂产品打造,即使面对成千上万的零件也能从容应对,快速识别并解决数字样机的干涉等问题。 集成设计验证 内置自动验证功能,实时监控设计是否符合公司及行业标准;结合PLM数据可视化合成,辅助工程师做出更明智的决策。 二、综合仿真(Simcenter 3D):精准预测,降低试错成本 极速前后处理 依托先进的几何引擎,将强大的分析命令与几何编辑紧密集成,相比传统有限元工具,可缩短高达70%的仿真建模时间。 全方位结构分析 在同一环境集成线性静力学、动态、疲劳及非线性分析,底层由业界顶尖的NX Nastran解算器提供支持,确保计算的高精度与可靠性。 声学与热管理分析 提供内外声学仿真以优化音质、降低噪音;具备一流的热传导仿真能力,帮助电子产品和工业机械实现最佳热管理方案。 多物理场耦合 简化了结构动力学、热传导、流体流动等复杂物理现象的模拟过程,消除外部数据传输错误,真实还原产品运行工况。 三、智能制造(CAM):打通从计划到车间的数字主线 全面的制造解决方案 提供从工装设计、CAM编程到机床控制器(如Sinumerik)的一体化支持,助力制定更科学的生产决策。 深度集成的PLM环境 借助Teamcenter实现数据和流程的统一管理,避免多数据库冲突,支持重用验证过的加工工艺与刀具库。 车间级互联 通过DNC系统与车间无缝对接,直接将加工数据和刀具清单下发至CNC机床,实现计划与生产的紧密结合。 提质增效 优化NC编程与刀具路径,提升表面精加工水平与零件精度;减少人为错误,显著提高新机床部署成功率及制造资源利用率。 总结 UG NX 2023作为一款集成化的产品工程解决方案,通过其强大的设计、仿真和制造功能,为现代制造业提供了完整的数字化产品开发平台。无论是复杂产品的设计验证,还是精密制造的流程优化,UG NX 2023都能为工程师团队提供高效、可靠的解决方案,助力企业提升产品创新能力和市场竞争力。 适用领域 模具设计、汽车制造、航空航天、通用机械、消费电子等

67,536

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧