
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java线程池在java程序员代码编写中是经常遇到的,那么如何编写线程池呢?重点就在于你要搞定他的原理,要知道一个东西的原理,首先要知道如何使用它。所以先上一个使用线程池的示例。
1、任务类
要使用Java自带的线程池,首先需要一个任务类,这个任务类需要实现Runnable接口,并重写run方法(需要多线程执行的任务逻辑)。
2、创建线程池并执行多个任务
有了任务类,接下来创建线程池,并执行多个任务。我们使用ThreadPoolExecutor来创建线程池。
逻辑很简单,创建了一个线程池管理器,然后使用它执行了15个任务。这里需要解释一下构造ThreadPoolExecutor的时候传入的参数的意义:
5(corePoolSize)是指核心池大小。即创建的线程数量。如果线程池中线程数等于这个数量,那么下一个来的任务就会被放在任务队列中。
10(maximumPoolSize)是指线程池能创建的最大线程数量。如果上一步的任务队列已满,那么线程池将继续创建线程,直到线程数=10,下一个来的任务会被拒绝执行。
200(keepAliveTime)是指表示线程没有任务执行时最多保持多久时间会终止。默认情况下,只有当线程池中的线程数大于corePoolSize时,keepAliveTime才会起作用,直到线程池中的线程数不大于corePoolSize,即当线程池中的线程数大于corePoolSize时,如果一个线程空闲的时间达到keepAliveTime,则会终止,直到线程池中的线程数不超过corePoolSize。但是如果调用了allowCoreThreadTimeOut(boolean)方法,在线程池中的线程数不大于corePoolSize时,keepAliveTime参数也会起作用,直到线程池中的线程数为0。
昆明it培训: 解决多任务同时执行的需求,合理使用CPU资源。na多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。