在商城项目中,哪些功能模块需要用到多线程?

whyyouhitme_ 2019-05-27 10:34:43
我看分布式锁的示例的时候,生成订单号用到了多线程。而分布式锁用来保证安全性,防止生成两个一样的订单号。
但我又看到一个说法,Java web项目几乎用不到多线程,多线程都被框架封装好了。所以到底什么场景需要用到多线程?
每个用户访问一段代码,每个用户都是一个线程吗?到底什么意思??
...全文
3347 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
专注写bug 2019-05-31
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题

其实对于数据库连接池也可以看成是多线程
王少雄 2019-05-31
  • 打赏
  • 举报
回复
子厚_ 2019-05-29
  • 打赏
  • 举报
回复
写Netty的时候。
左耳边的期盼 2019-05-29
  • 打赏
  • 举报
回复
老敷 2019-05-29
  • 打赏
  • 举报
回复
国内土狗 2019-05-28
  • 打赏
  • 举报
回复
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题 所以,讲课时候那些循环调用.start()的代码,其实只是在模拟永辉访问,并不是我们需要在真实开发中写的,对吗 的确很少会写这样的代码,实际中也不会直接写单个线程,而是会用线程池那,哪些场景需要我们自己创建线程池多线程处理呢
xuelong222 2019-05-28
  • 打赏
  • 举报
回复
tianfang 2019-05-28
  • 打赏
  • 举报
回复
几乎没有多线程 只有自己的某些服务,通过消息或者定时器启动的才可能用到多线程
qq_28068487 2019-05-28
  • 打赏
  • 举报
回复
引用 7 楼 maradona1984 的回复:
[quote=引用 6 楼 whyyouhitme_ 的回复:]
[quote=引用 5 楼 maradona1984 的回复:]
[quote=引用 3 楼 whyyouhitme_ 的回复:]
[quote=引用 1 楼 maradona1984 的回复:]
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题


引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
所以,讲课时候那些循环调用.start()的代码,其实只是在模拟永辉访问,并不是我们需要在真实开发中写的,对吗[/quote]
的确很少会写这样的代码,实际中也不会直接写单个线程,而是会用线程池[/quote]那,哪些场景需要我们自己创建线程池多线程处理呢[/quote]
IO密集型的场景[/quote]文件读写
qq_28068487 2019-05-28
  • 打赏
  • 举报
回复
打个比方,你买个东西,然后有短信通知,但短信通知不属于购买的核心业务,这时候可以开个新线程去执行短信发送操作。
whyyouhitme_ 2019-05-27
  • 打赏
  • 举报
回复
引用 2 楼 水边2 的回复:
web站点本身就是多线程,
你启动一个进程,它对80端口进行监听,收到请求就启动一个线程去处理。

所以如果你有公共变量,比如静态变量,对它的值进行读写,就要注意线程安全,可能值变成3了,你读取到的却是1.
被问到项目里用到多线程,怎么说,总不能说,框架封装好了。那就从安全角度直接谈呗?
whyyouhitme_ 2019-05-27
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题


引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
所以,讲课时候那些循环调用.start()的代码,其实只是在模拟永辉访问,并不是我们需要在真实开发中写的,对吗
游北亮 2019-05-27
  • 打赏
  • 举报
回复
web站点本身就是多线程, 你启动一个进程,它对80端口进行监听,收到请求就启动一个线程去处理。 所以如果你有公共变量,比如静态变量,对它的值进行读写,就要注意线程安全,可能值变成3了,你读取到的却是1.
maradona1984 2019-05-27
  • 打赏
  • 举报
回复
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
maradona1984 2019-05-27
  • 打赏
  • 举报
回复
引用 6 楼 whyyouhitme_ 的回复:
[quote=引用 5 楼 maradona1984 的回复:] [quote=引用 3 楼 whyyouhitme_ 的回复:] [quote=引用 1 楼 maradona1984 的回复:] 每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
所以,讲课时候那些循环调用.start()的代码,其实只是在模拟永辉访问,并不是我们需要在真实开发中写的,对吗[/quote] 的确很少会写这样的代码,实际中也不会直接写单个线程,而是会用线程池[/quote]那,哪些场景需要我们自己创建线程池多线程处理呢[/quote] IO密集型的场景
whyyouhitme_ 2019-05-27
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984 的回复:
[quote=引用 3 楼 whyyouhitme_ 的回复:]
[quote=引用 1 楼 maradona1984 的回复:]
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题


引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
所以,讲课时候那些循环调用.start()的代码,其实只是在模拟永辉访问,并不是我们需要在真实开发中写的,对吗[/quote]
的确很少会写这样的代码,实际中也不会直接写单个线程,而是会用线程池[/quote]那,哪些场景需要我们自己创建线程池多线程处理呢
maradona1984 2019-05-27
  • 打赏
  • 举报
回复
引用 3 楼 whyyouhitme_ 的回复:
[quote=引用 1 楼 maradona1984 的回复:] 每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
引用 1 楼 maradona1984 的回复:
每个请求,就有一个线程来执行相应的代码,你可以理解为你的代码都跑在多线程环境,封装好的只是线程调度,并不代表你不需要考虑多线程问题
所以,讲课时候那些循环调用.start()的代码,其实只是在模拟永辉访问,并不是我们需要在真实开发中写的,对吗[/quote] 的确很少会写这样的代码,实际中也不会直接写单个线程,而是会用线程池

67,513

社区成员

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

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