无处不在的线程,多线程,阻塞队列,并发
编程世界无新鲜事,看你FQ翻得厉不厉害
场景:现在的软件开发迭代速度(一周一更新,甚至一天一发布)真是太快了,今天进行软件更新的时候,看到了有趣的现象,这不就是线程池,ThreadPoolExecutor,阻塞队列,任务(下载和安装)最好的案例嘛!经常看到很多博文在写多线程,并发,队列,却举不出现实生活的场景例子,都在背书吗(天下文章一大抄,看你会抄不会抄)。
现象图示:
我开启了全部更新38个要更新的app,可最多时看到了3个在同时下载,剩下的下载任务在排队(队列),安装过程中,明明已经下载了多个app,可同一时刻只有一个在安装,其他下载好的app也在排队
说起线程,不得不提起进程,
线程,还真不好下定义,你要问十个人就会有十种答案,我就当线程就是一个可以执行的任务程序(比如上面图片里的下载和安装)。java里线程主要通过继承java.lang.Thread类或实现java.lang.Runnable接口,其实Thread也是实现了Runnable接口的类,所有,线程还是围绕着java.lang.Thread类扩展包装,比如下面要要说的线程池。核心类如下