怎么确定项目会不会发生并发

申码程序 2019-07-09 10:31:41
假设有一个网站,有一个用户注册,他会发生并发问题吗?一般的增删改查都需要处理并发问题吗?还是说只有在网站访问量很大时才需要对增删改查做并发处理?
...全文
626 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
guishuanglin 2019-08-12
  • 打赏
  • 举报
回复
楼主, 多考虑问题没有错, 但是这个代码世界总有并发的问题 1, 你代码没有问题, 但有可能请求的资源有并发问题, 比如: 数据库操作 2, 你代码没有问题, 但是别人的代码有问题, 你要调用别人的服务,比如: 阿里云 3, 你代码没有问题, 但是硬盘有问题, 你请的文件, 其它程序也在请求,并发冲突. 并发是无处不在的, 也处处没有, 并发是悲观的, 也是乐观的, 去政府办事,遇到并发也要排队, 如果人少就没有并发. 我的解决办法是, 如果我是项目经理我就做顶层设计, 如果我不是项目经理, 我就保证我自己的代码: 1, 让自己的代码尽可能的快, 不给项目出麻烦. 2, 让自己的SQL达到最快的速度, 减少并发的机会. 3, 如果一定要并发就用排队, 线程等待, 接口回调等方法来处理. 4, 如果要与别人抢资源, 做到用完之后立即释放.
zspmsir 2019-08-12
  • 打赏
  • 举报
回复
并发问题是和你们的实际业务需求来的。人多的话,任何一个接口都有可能有并发问题
编程写手 2019-08-11
  • 打赏
  • 举报
回复
基本上,如果访问的人数到了一定的时候都会出现并发问题。
北飞的企鹅 2019-07-26
  • 打赏
  • 举报
回复
并发请求的话先看有没有使用全局的静态变量,如果有使用就得考虑线程安全的问题,然后要考虑数据库方面的问题,看业务使用乐观锁或者悲观锁,并发在大的话就考虑拆分接口服务做负载均衡或者使用消息队列也可
Hack夜舞 2019-07-23
  • 打赏
  • 举报
回复
加线程锁,但是会有效率问题
boomLJIE 2019-07-21
  • 打赏
  • 举报
回复
引用 楼主 码申的回复:
假设有一个网站,有一个用户注册,他会发生并发问题吗?一般的增删改查都需要处理并发问题吗?还是说只有在网站访问量很大时才需要对增删改查做并发处理?
会,并发不是只看用户数量,是你程序里有没有操作公共资源,就按一个用户来说简单一个场景一个用户同时多个地方登录,同时触发一个请求也可能导致,不管是分布式事物少还是数据库锁都是种锁这种概率的发生
行云边 2019-07-19
  • 打赏
  • 举报
回复
你也业务简单,没有使用全局静态变量,基本不需要考虑并发,因为web服务譬如tomcat对每次请求都是new一个servlet实例(或者是jsp的实例),不存在同步的问题。数据库连接也是一个连接池,你没获取到连接也会等待,所以基本不需要考虑并发
Asurplus 2019-07-19
  • 打赏
  • 举报
回复
只要是存在有两个人同时操作同一个模块,同一个方法的可能,都需要考虑并发
guishuanglin 2019-07-18
  • 打赏
  • 举报
回复
加油, 并发这个问题, 整个软件上有各种影响, 但是对于程序来说, 解决并发的问题核心就是线程安全, 只有线程安全了, 才谈得上并发处理. 反过来如果线程不安全, 其它用任何手段保证不了并发不出问题.
hqlccc 2019-07-17
  • 打赏
  • 举报
回复
学习了,各位大神厉害
KK_MM1083 2019-07-17
  • 打赏
  • 举报
回复
比如一般注册都防止重名。如果两人同一刻都查到没有重名,但是写入时重名了,这个需要怎么防止?
申码程序 2019-07-16
  • 打赏
  • 举报
回复
引用 11 楼 月光下的大D丶 的回复:
个人理解: 并发会带来的问题: 1、线程安全 2、接口压力 3、数据库读写压力和事务 目前想到的就这几个,针对这几个场景来设计接口还有数据库应该就可以了 1、少用公共变量,如果方法执行的慢就想办法优化方法 2、负载均衡,优化接口速度,减轻压力 3、读写分离 方法有很多,希望有大神指出不足
我以为并发安全,主要集中在线程安全,是我想的片面了
  • 打赏
  • 举报
回复
个人理解: 并发会带来的问题: 1、线程安全 2、接口压力 3、数据库读写压力和事务 目前想到的就这几个,针对这几个场景来设计接口还有数据库应该就可以了 1、少用公共变量,如果方法执行的慢就想办法优化方法 2、负载均衡,优化接口速度,减轻压力 3、读写分离 方法有很多,希望有大神指出不足
申码程序 2019-07-13
  • 打赏
  • 举报
回复
引用 9 楼 maradona1984 的回复:
[quote=引用 8 楼 码申 的回复:] [quote=引用 7 楼 James灬Gosling 的回复:][quote=引用 6 楼 码申 的回复:] [quote=引用 3 楼 guishuanglin 的回复:]正确的姿势是: 保证你写的东西没有并发问题, 不用管他会不会并发: 1, 只要用到类公共变量, 全局变量, 都有并发问题, 如果一定要用, 用原子变量类型/可并发类型(原子类型, 保证并发不影响) 2, 多用全局常量, 类常量( 常量不可变, 没有并发问题 ) 3, 变量只在方法里定义 (不与别人公用, 没有并发问题)
像一般controller层如果只是简单的增删改查,不使用全局变量还有共享变量,就不会出现并发问题,是这样子吧,并发与否根据自己使用的变量有关是吧?[/quote]controller虽然不会并发,但是service和dao可以呀[/quote]service与dao会不会并发,依然根据你是否使用了全局变量来判断会不会发生并发吧[/quote] 你对并发的理解就是线程安全?[/quote]在下对并发的理解欠缺,烦请赐教
maradona1984 2019-07-12
  • 打赏
  • 举报
回复
引用 8 楼 码申 的回复:
[quote=引用 7 楼 James灬Gosling 的回复:][quote=引用 6 楼 码申 的回复:] [quote=引用 3 楼 guishuanglin 的回复:]正确的姿势是: 保证你写的东西没有并发问题, 不用管他会不会并发: 1, 只要用到类公共变量, 全局变量, 都有并发问题, 如果一定要用, 用原子变量类型/可并发类型(原子类型, 保证并发不影响) 2, 多用全局常量, 类常量( 常量不可变, 没有并发问题 ) 3, 变量只在方法里定义 (不与别人公用, 没有并发问题)
像一般controller层如果只是简单的增删改查,不使用全局变量还有共享变量,就不会出现并发问题,是这样子吧,并发与否根据自己使用的变量有关是吧?[/quote]controller虽然不会并发,但是service和dao可以呀[/quote]service与dao会不会并发,依然根据你是否使用了全局变量来判断会不会发生并发吧[/quote] 你对并发的理解就是线程安全?
申码程序 2019-07-12
  • 打赏
  • 举报
回复
引用 7 楼 James灬Gosling 的回复:
[quote=引用 6 楼 码申 的回复:]
[quote=引用 3 楼 guishuanglin 的回复:]正确的姿势是: 保证你写的东西没有并发问题, 不用管他会不会并发:
1, 只要用到类公共变量, 全局变量, 都有并发问题, 如果一定要用, 用原子变量类型/可并发类型(原子类型, 保证并发不影响)
2, 多用全局常量, 类常量( 常量不可变, 没有并发问题 )
3, 变量只在方法里定义 (不与别人公用, 没有并发问题)
像一般controller层如果只是简单的增删改查,不使用全局变量还有共享变量,就不会出现并发问题,是这样子吧,并发与否根据自己使用的变量有关是吧?[/quote]controller虽然不会并发,但是service和dao可以呀[/quote]service与dao会不会并发,依然根据你是否使用了全局变量来判断会不会发生并发吧
戎码一生灬 2019-07-11
  • 打赏
  • 举报
回复
引用 6 楼 码申 的回复:
[quote=引用 3 楼 guishuanglin 的回复:]正确的姿势是: 保证你写的东西没有并发问题, 不用管他会不会并发:
1, 只要用到类公共变量, 全局变量, 都有并发问题, 如果一定要用, 用原子变量类型/可并发类型(原子类型, 保证并发不影响)
2, 多用全局常量, 类常量( 常量不可变, 没有并发问题 )
3, 变量只在方法里定义 (不与别人公用, 没有并发问题)
像一般controller层如果只是简单的增删改查,不使用全局变量还有共享变量,就不会出现并发问题,是这样子吧,并发与否根据自己使用的变量有关是吧?[/quote]controller虽然不会并发,但是service和dao可以呀
maradona1984 2019-07-10
  • 打赏
  • 举报
回复
不管怎么样都会发生并发,但大多不需要考虑 一般情况下,有约束的情况下才需要考虑,比如注册,手机号不能重复,那仅仅是查询当前数据库是否存在相同手机号是不够的,这样存在并发问题(在一般数据库默认的事务隔离级别下),要么唯一约束,要么加锁 上面是insert的场景,还有update场景,比如秒杀,避免超卖之类的
guishuanglin 2019-07-10
  • 打赏
  • 举报
回复
正确的姿势是: 保证你写的东西没有并发问题, 不用管他会不会并发: 1, 只要用到类公共变量, 全局变量, 都有并发问题, 如果一定要用, 用原子变量类型/可并发类型(原子类型, 保证并发不影响) 2, 多用全局常量, 类常量( 常量不可变, 没有并发问题 ) 3, 变量只在方法里定义 (不与别人公用, 没有并发问题)
戎码一生灬 2019-07-10
  • 打赏
  • 举报
回复
引用 1 楼 请叫我伟哥伟哥 的回复:
应该不需要吧 并发都是用户数量大的时候才发生吧
那可不一定哦,加入只有两个用户,难道你敢保证这俩用户一定不会并发?
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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