定时器类
ScheduledExecutorService =Executors.newScheduledThreadPool(10);
启动10线程任务,定时去干活。
1 发现一个问题。 用掉5个线程,完成4个,还有一个再使用中。
这个时候再去使用的时候,发现又创建新的线程。而没有使用还回去的,那4个线程。
一直等10 线程都创建完成了,才会循环往复使用。在使用过程,千万不要把线程数开的太大。估算一下系统并发线程任务数目,否则浪费系统资源。还有可能导致down机。
2 submit 和 execute 两个方法区别。
submit 可以返回结果,execute 没有结果。但是一定要记得。这两个方法不是立即执行的,而是等空余线程才会去执行。
3 scheduleAtFixedRate 定时任务。
TimeUnit 最后一个参数单位是可以指定的。记得指定后,前面 initialDelay,period 这两个参数都会使用这个单位。
4 invokeAll 这个方法 一起执行一批任务。这个方法好。在并行结算有用。
比如三台计算都去计算一个任务,有了,可以同时启动这批任务。然后去返回结果。