本来这篇文章快写好的了,电脑不停的输出字符,生气的砸了一下,直接关机了,内容没保存。不知为何最近这么的暴躁,昨天是静了静,休息了一下,今天上班回来,该写的还是得写啊,人要是没了梦想,活着就是为了等死吗?很喜欢肖申克的救赎里面的一句话,busy living or busy dying,静下心来,努力追求梦想吧!
上一篇文章写了 Java 集合框架的内容,我觉得写的还可以吧,虽然都是点到即止,但是希望能够加深读者的印象。在看完源码的前提下,有效的把握重点,由点及面,才能胸有成竹。

这张图画的很好,注意下里面进入和出去状态的方法,基本线程的大概就有着落了。
Thread
Runnable 接口
Callable 接口
FutureTask<Integer> ft = new FutureTask<>(callable);
Thread thread = new Thread(ft);
thread.start();
ft.get();
① 优点
② 线程池都实现了 ExecutorService 接口:submit(有返回值)、execute、shutdown
启动指定数量的线程——ThreadPoolExecutor
任务处理过程
Queue 的分类
ArrayBlockingQueue:有界,FIFO排序
LinkedBlockingQueue:无界,FIFO排序
SynchronousQueue:空的,直接将任务提交线程
ProprityBlockingQueue:优先级有界队列
提供的 Executor(如何由上面知识得出?)
③ 定时执行一些任务——ScheduledThreadPoolExecutor
Executors.newScheduledThreadPool(n) //线程数
executorServiece.scheduleAtFixedRate(Runnable, 1, 3, TimeUnit) //第一次延迟时间,定期时间
④ 线程的使用准则
⑤ shutdown():