版权声明:辛辛苦苦码字,你们转载的时候记得告诉我 https://blog.csdn.net/dxyinme/article/details/90743223
当Java要开始多线程的时候,个人感觉直接start线程对于线程的管理非常不利,然后就去查了一下有没有比较方便的线程管理办法。
查了一下好像还真有,主要是这两个库:
有下面这4种线程池类型
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
你可以通过如下方式新建一个线程池:
ExecutorService xxx = Executors.newCachedThreadPool();
你还可以通过
xxx.isTerminated()
判断线程池中的线程是否全部终止。
可以通过
xxx.shutdown()
向线程池xxx发送终止进程信号,之后当xxx中现有的所有线程不会受到影响,但是之后不能再往xxx中execute新的线程了;xxx中线程全部结束之后,xxx.isTerminated()会被设置为True。
xxx.execute(new Runnable())
将一个线程放到xxx线程池中执行。