heima并发---并发工具(5)---任务调度现线程池--224
我们看下timer的基本使用:
代码:
第一种情况:如果没有sleep的话,两个timer都是一秒后执行的。
第二种情况:
一个任务执行的时间长,影响其他的任务执行时间的。
第三种情况:第一个任务报异常
---224---
第一个测试:
第一个任务延时2秒但是不会让第二个任务延时执行的。因为线程池设置为2,如果线程池设置是1的话还是会串行的,要2秒之后的。
第二个测试:
异常是不报错的。
---225---
还可以定时的执行任务的。
第一种任务时间短:
第二种:任务时间长
俩个任务紧挨着执行了。
第三种:
看下是结束时候开始算的。
---226---
定时任务是如何打印异常的呢?
第一种:定时的异常
第二种:同理不是定时的异常
我们直到submit是返回的是Future对象的。
get()返回结果或者异常信息。
---227---
案例:
localDataTine是java8,线程安全的。
参数:当前时间和周四的时间差,每周的间隔
---228---
测试:
---229---
tomcat的线程池。
看下是多个线程的,Acceptor是线程,Poller是线程Executor是线程。每个线程干的活是不一样的。
子类捉住了这个异常,再次尝试放在队列里面。
---230-tomcat线程池--
看下配置:
第一个不需要改的:1是很好的,一个线程去建立连接,没有连接就在那里等着。
第二个不需要改的:多路复用,检测多个channel。
其他的参数在这里配置:
优先级这个高些:
---
tomcat的线程是守护线程的。
maxIdleTime:救急线程
无界队列,可以调为有限的值。
无界队列就没有己会创建救急线程?
---231-tomcat线程池--