JAVA中的并发问题!

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

谢谢各位高手给我指点!~
...全文
524 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 数据存取逻辑混乱....
内容概要:本文聚焦于【SCI一区复现】基于配电网韧性提升的应急移动电源(MPS)动态调度的Matlab代码实现,旨在通过仿真手段优化灾害或突发事件下配电网的恢复能力。研究在前期MPS预配置的基础上,进一步构建动态调度模型,综合考虑负荷优先级、网络拓扑变化、MPS移动路径与供电时序等因素,实现灾后关键负荷的快速、持续恢复。文提供了完整的Matlab仿真资源,包含YALMIP等优化工具包,以支持复杂的数学规划问题求解。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及电力行业从业者。; 使用场景及目标:① 复现高水平期刊(SCI一区)关于配电网韧性的研究成果;② 学习和掌握应急移动电源(如移动储能车)在灾后配电网恢复的优化调度建模与求解方法;③ 利用提供的Matlab代码进行二次开发,研究不同灾害场景下的配电网应急响应策略。; 阅读建议:此资源以复现SCI一区论文为核心,不仅提供代码,更侧重于先进优化思想的应用。学习者应结合配电网、运筹学等相关知识,深入理解模型构建逻辑,并利用所提供的网盘资源进行代码调试与仿真分析,从而掌握解决实际工程问题的高级方法。
内容概要:本文档详细介绍了一种针对梯级水光互补系统的短期优化调度模型,旨在最大化可再生能源的可消纳电量期望值。该模型通过Matlab代码实现,综合考虑了梯级水电站与光伏发电的协同运行特性,充分结合水资源利用效率与光照条件的时空变化规律,以提升清洁能源的整体利用水平。文档不仅阐述了完整的数学建模过程,还引入智能优化算法求解这一复杂非线性调度问题,并提供了详尽的Matlab代码实例,便于研究人员复现和验证。此外,文提及了该模型在新能源、电力系统优化、智能算法应用等领域的广泛关联性,为相关研究提供了技术支撑与理论参考。; 适合人群:具备一定编程基础,特别是熟练掌握Matlab环境的科研人员;从事新能源系统规划、电力系统调度、自动化控制及相关领域的硕士、博士研究生及工程技术人员。; 使用场景及目标:①为梯级水电与光伏电站的协同优化运行提供理论依据与实用的技术框架;②帮助科研人员快速掌握并应用智能优化算法解决实际工程的多目标、多约束调度问题;③推动清洁能源的高效利用,减少弃水弃光现象,提升能源系统的经济性与环境效益。; 阅读建议:此资源以Matlab代码为核心载体,融合了理论建模与实践仿真,建议读者在学习过程不仅要深入理解其背后的优化原理与数学模型,还需动手调试代码,结合不同场景进行实验,从而真正掌握该调度模型的设计思想与实现方法,为后续的科研与工程应用打下坚实基础。
内容概要:本文提出了一种融合鱼鹰优化算法(OOA)与柯西变异策略的改进型麻雀搜索算法(OCSSA),旨在克服传统麻雀优化算法在求解复杂优化问题时易陷入局部最优、收敛速度慢及寻优精度不足等问题。通过引入鱼鹰捕食机制增强算法的全局探索能力,同时结合柯西变异策略提升种群多样性与局部开发能力,从而有效提高算法的整体优化性能。文系统阐述了算法的数学模型与改进策略的设计原理,并通过多个标准基准测试函数验证了所提算法在收敛性、稳定性和寻优精度方面的优越性,进一步将该算法应用于典型工程优化问题,充分展示了其在实际场景的可行性和有效性。; 适合人群:具备一定智能优化算法理论基础,从事人工智能、运筹优化、电力系统、自动化、智能制造等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 改进现有群智能优化算法,提升求解高维、非线性、多峰值复杂优化问题的能力;② 应用于电力系统调度、参数辨识、路径规划、机器学习超参数调优、结构设计优化等需要高效优化技术的工程实践;③ 作为学术研究参考,推动新型混合智能优化算法的创新与发展。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法的实现细节与迭代机制,重点关注鱼鹰捕食行为的建模方式与柯西变异的触发条件,通过对比实验分析各改进策略对算法性能的影响,并尝试将其迁移至不同类型的优化问题进行测试与调参,以全面掌握算法的应用技巧与适应性。

67,537

社区成员

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

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