Java的多线程有什么用处

说实话,你的例子很正确。
刚开始学习多线程的时候,我是这样理解的,而且很直观。
访问网站时,浏览器会打开一堆选项卡,每个选项卡都会在后台加载。
这不是多线程吗?你提到的单线程确实有点像早期的老冲浪者。
要打开新页面,您必须等到上一页关闭。
效率很低。

有趣的是,这个比喻在简单的场景中特别有效。
我之前正在开发一个即时通讯工具。
如果不使用多线程,客户端就必须等待前面的消息处理完之后才能接收,用户就会崩溃。
使用多线程后,消息队列运行速度非常快,后台处理文件上传下载,前台聊天界面完全不卡顿。

不过我自己没有做过,但是听说Java线程池用得好不好影响很大。
我有一个朋友写了一个电商系统,但是不了解线程池的核心参数。
结果,创建了太多线程,导致系统崩溃。
他说,当时CPU已满,显示器上全是绿色,但实际上运行的线程太多,内存快用完了。
正如你所说,更多的多线程并不总是更好。
你必须控制数量并设定时间限制。

我记得数据在X左右,但我建议你验证一下。
不同的系统对线程的要求有很大不同。
例如,高并发支付系统对线程的细粒度控制要求非常高。
如果任何参数设置错误,都可能导致死锁。
我们当时在测试的时候,遇到了线程A持有锁正在等待线程B,线程B又在等待线程A的情况,最后发现锁的细节没有掌握好。

显然,多线程意味着使用并行处理而不是串行处理,但关键在于如何设计工作分工和线程协作。
你提到的线程卡住其实可以通过Java中的中断和超时机制来处理。
之前写一个定时任务的时候,我使用了ScheduledExecutorService,并设置了执行延迟和频率。
如果没有及时完成,会自动回收,不会拖慢整个系统。
这种细致的加工,确实让各种纱线从“概念”变成了真正可以使用的工具。

Java函数中多线程环境下优化内存使用的注意事项