实际中应用:主线程只考虑
显示\刷新UI界面
处理UI事件(比如点击事件、滚动事件、拖拽事件等)
子线程处理:数据加载或者(耗费时间较长的操作)
多线程的主要目的:
线程并发分享 CPU 运算资源
能适当提高程序的执行效率
能适当提高资源利用率(CPU、内存利用率)
解决:耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验
关于当前:cpu每次只执行一个线程(评论中指出多核的问题)进行查找
在百度知道上看到这么一条答案:
1、在超线程技术的情况下,单核和多核cpu处理并发进程都是并行处理的,但单核并行处理的数量远低于多核。单核比多核更容易在多进程时假死。
2、多核并不止是多几个运算器,包括一二级缓存也是独立的。
这篇文章可以看看:https://www.cnblogs.com/hitwhhw09/p/4718404.html
摘自这篇文章的语句:
什么时候该使用多线程呢?这要分四种情况讨论:
a.多核CPU——计算密集型任务。此时要尽量使用多线程,可以提高任务执行效率,例如加密解密,数据压缩解压缩(视频、音频、普通数据),否则只能使一个核心满载,而其他核心闲置。
b.单核CPU——计算密集型任务。此时的任务已经把CPU资源%消耗了,就没必要也不可能使用多线程来提高计算效率了;相反,如果要做人机交互,最好还是要用多线程,避免用户没法对计算机进行操作。
c.单核CPU——IO密集型任务,使用多线程还是为了人机交互方便,
d.多核CPU——IO密集型任务,这就更不用说了,跟单核时候原因一样。
程序员需要掌握的技巧/技术
()减少串行化的代码用以提高效率。这是废话。
()单一的共享数据分布化:把一个数据复制很多份,让不同线程可以同时访问。
()负载均衡,分为静态的和动态的两种。具体的参见有关文献。