heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

我们看下timer的基本使用:

代码:

heima并发---并发工具(5)---任务调度现线程池--224

第一种情况:如果没有sleep的话,两个timer都是一秒后执行的。

heima并发---并发工具(5)---任务调度现线程池--224

第二种情况:

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

一个任务执行的时间长,影响其他的任务执行时间的。

第三种情况:第一个任务报异常

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

---224---

第一个测试:

heima并发---并发工具(5)---任务调度现线程池--224

第一个任务延时2秒但是不会让第二个任务延时执行的。因为线程池设置为2,如果线程池设置是1的话还是会串行的,要2秒之后的。

第二个测试:

heima并发---并发工具(5)---任务调度现线程池--224

异常是不报错的。

---225---

还可以定时的执行任务的。

第一种任务时间短:

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

第二种:任务时间长

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

俩个任务紧挨着执行了。

第三种:

heima并发---并发工具(5)---任务调度现线程池--224

看下是结束时候开始算的。

heima并发---并发工具(5)---任务调度现线程池--224

---226---

定时任务是如何打印异常的呢?

第一种:定时的异常

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

第二种:同理不是定时的异常

heima并发---并发工具(5)---任务调度现线程池--224

我们直到submit是返回的是Future对象的。

heima并发---并发工具(5)---任务调度现线程池--224

get()返回结果或者异常信息。

---227---

案例:

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

localDataTine是java8,线程安全的。

参数:当前时间和周四的时间差,每周的间隔

---228---

测试:

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

---229---

tomcat的线程池。

heima并发---并发工具(5)---任务调度现线程池--224

看下是多个线程的,Acceptor是线程,Poller是线程Executor是线程。每个线程干的活是不一样的。

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

子类捉住了这个异常,再次尝试放在队列里面。

heima并发---并发工具(5)---任务调度现线程池--224

---230-tomcat线程池--

看下配置:

heima并发---并发工具(5)---任务调度现线程池--224

第一个不需要改的:1是很好的,一个线程去建立连接,没有连接就在那里等着。

第二个不需要改的:多路复用,检测多个channel。

其他的参数在这里配置:

heima并发---并发工具(5)---任务调度现线程池--224

heima并发---并发工具(5)---任务调度现线程池--224

优先级这个高些:

heima并发---并发工具(5)---任务调度现线程池--224

---

heima并发---并发工具(5)---任务调度现线程池--224

tomcat的线程是守护线程的。

maxIdleTime:救急线程

无界队列,可以调为有限的值。

无界队列就没有己会创建救急线程?

heima并发---并发工具(5)---任务调度现线程池--224

---231-tomcat线程池--