上几期讲了行程的五张状态,同步工具类,线程池等知识点?但是这些知识点在什么场景下使用呢?
使用多线程的场景:
场景一、定时向大量的用户发送邮件。所有的定时任务都是多线程的实现。
场景二、用户注册时候需要短信或则邮件验证。短信和邮件接口比较耗时,前端UI感觉被卡住,这时候
一个异步线程去发送邮件或则短信。用户体验会更好。
场景三、你要写一个电商网站,怎么实现双11抢购模型。
场景四、从kafka,rabiitMq队列中取出数据处理,kafka队列中数据越来越多,线程显然处理不过来,多个线程试试,抢占cpu的频率更多。如果是多核cpu处理效率更高。
多线程的好处:
好处1、程序响应更快,使用线程可以把占据时间长的程序中的任务放到后台去处理。再比如垃圾回收线程作为后台服务。
好处2、用户界面更加吸引人,比如文件拷贝功能,可以使用一个线程统计下拷贝进度,可以弹出一个进度条来显示处理的进度
好处3、程序的运行效率可能会提高,充分利用CPU资源,比如多个线程从队列读取数据处理。
好处4、满足现实生活的很多场景,比如电商抢购。
多线程的缺点:
缺点1、如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.
缺点2、更多的线程需要更多的内存空间,我们知道每个线程都要创建一个栈。
缺点3、线程中止需要考虑对程序运行的影响,如果有个定时清理数据的线程挂了,会不会造成数据积压。
缺点4、通常 块模型 数据是在多个线程间共享的,需要防止线程死锁情况的发生。
好本期到此结束,有问题欢迎在下方留言,如果觉得有用的话记得点击上方的心形收藏。