项目中使用多线程的场景,多线程的优缺点

简介: 项目中使用多线程的场景,多线程的优缺点

1. 订单处理:(用户下单后可能支付状态不明确,我们后台可以通过多线程去主动核实第三方支付状态,来更新我们系统的订单状态)

2. 登录后用户信息处理:(用户登录后应该通知各相关系统将用户常用数据进行缓存,来快速响应登录用户)

3. 并发量大的场景:譬如从一个目录里读入大量文件写入数据库,使用多线程能够极大提高效率

4. 循环验证的场景:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证 1 万条 url 路径是否存在,正常情况要循环 1 万次,逐个去验证每一条 URL,这样效率会很低,假设验证一条需要 1 分钟,总共就需要 1 万分钟,有点恐怖。这时可以用多线程,将 1 万条 URL 分成 50 等份,开 50 个线程,每个线程只需验证 200 条,这样所有的线程执行完是远小于 1 万分钟的。

5. 任务执行进度的场景:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量 (这样不同方法可以共享),任务执行一定程度就给变量值加 1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。

6. 商城系统中的页面静态化:因为在一个固定的时间需要对商品进行一遍静态化,由于商品数量比较多 如果使用单线程将耗时过长,我们使用一个定长线程池进行批量执行,将任务放在队列中,多个线程同时领取并执行。

通俗的讲:就是你有很多商品上架了,然后商品很多,你可以去使用线程池进行上架操作,使用多线程操作。

总结:总之使用多线程就是为了充分利用 cpu 的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。不过 CPU 执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

 

二、多线程的优缺点

多线程的好处:

1. 可以使用线程把程序中占据时间长的的任务放到后台去处理

2. 可以设置一个进度条来显示处理的进度,使用户界面更加吸引人

3. 程序的运行效率可能会提高

4. 在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.

多线程的缺点:

1. 设置更多的线程需要更多的内存空间

2. 线程中止需要考虑对程序运行的影响

3. 如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.

4. 通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生

相关文章
|
3天前
|
Java 数据库
【Java多线程】对线程池的理解并模拟实现线程池
【Java多线程】对线程池的理解并模拟实现线程池
13 1
|
3天前
|
设计模式 消息中间件 安全
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
9 0
|
3天前
|
Java
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
11 1
|
3天前
|
存储 缓存 安全
【Java多线程】线程安全问题与解决方案
【Java多线程】线程安全问题与解决方案
10 1
|
3天前
|
Java 调度
【Java多线程】线程中几个常见的属性以及状态
【Java多线程】线程中几个常见的属性以及状态
8 0
|
3天前
|
Java 调度
【Java多线程】对进程与线程的理解
【Java多线程】对进程与线程的理解
11 1
|
5天前
|
存储 安全 Java
【探索Linux】P.21(多线程 | 线程同步 | 条件变量 | 线程安全)
【探索Linux】P.21(多线程 | 线程同步 | 条件变量 | 线程安全)
10 0
|
15天前
|
Java 数据库 Android开发
【专栏】Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理
【4月更文挑战第27天】本文探讨了Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理。通过案例分析展示了网络请求、图像处理和数据库操作的优化实践。同时,文章指出并发编程的挑战,如性能评估、调试及兼容性问题,并强调了多线程优化对提升应用性能的重要性。开发者应持续学习和探索新的优化策略,以适应移动应用市场的竞争需求。
|
5天前
|
算法 安全 Linux
【探索Linux】P.20(多线程 | 线程互斥 | 互斥锁 | 死锁 | 资源饥饿)
【探索Linux】P.20(多线程 | 线程互斥 | 互斥锁 | 死锁 | 资源饥饿)
11 0
|
5天前
|
存储 安全 Linux
【探索Linux】P.19(多线程 | 线程的概念 | 线程控制 | 分离线程)
【探索Linux】P.19(多线程 | 线程的概念 | 线程控制 | 分离线程)
7 0